我已经阅读了有关如何执行此操作的文档,但在实践中,我遇到了问题。在我的应用程序中,我的 database.yml 文件中有 2 个不同的数据库,如下所述。
sqlite_test:
adapter: sqlite3
database: db/sqlite_test.sqlite3
table: plots
pool: 5
timeout: 5000
development:
adapter: mysql2
encoding: utf8
reconnect: false
database: test
pool: 5
username: myname
password: mypassword
host: localhost
我的应用程序是一个动态绘图仪,它将在(基本)数据库中绘制数据,而无需了解数据库中的内容或其结构。这两个数据库都包含不同的数据。我在单独的 Rails 应用程序中创建的 SQLite 数据库。
我正在使用的当前应用程序是围绕我在外部构建的 MYSQL 数据库构建的。我将 SQLite 数据库复制到 /db 目录中。所以在我的主要模型中,当我说:
class Plot < ActiveRecord::Base
establish_connection :development
set_table_name "stock_test"
set_primary_key :id
一切都很好,花花公子。但是,当我将其更改为:
establish_connection :sqlite_test
set_table_name "plots"
并尝试通过 Rails 控制台访问该数据库,我收到一条错误消息:
>>ActiveRecord::AdapterNotSpecified: database configuration does not specify adapter
我不知道为什么会这样,因为 database.yml 文件明确指定了一个适配器?但是,当我在我的模型中手动完成时,一切都按应有的方式工作。
class Plot < ActiveRecord::Base
establish_connection(:adapter => "sqlite3", :database => "db/sqlite_test.sqlite3", :pool => 5 )
为什么当我手动指定 database.yml 中的内容时一切正常,但当我只使用 database.yml 引用时却不行?
谢谢!