如何在Rails应用程序中使用多个数据库使用database.yml

我已经阅读了有关如何执行此操作的文档,但在实践中,我遇到了问题。 在我的应用程序中,我有2个不同的数据库,如下面我的database.yml文件中所述。

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  "sqlite3", :database => "db/sqlite_test.sqlite3", :pool => 5 ) 

当我在database.yml中手动指定whats时,为什么这一切都有效,但是当我只使用database.yml引用时却没有?

谢谢!

我试图复制并让它发挥作用。 它与命名约定有关:您处于开发模式,AR将查找开发标记,在您的情况下,sqlite不存在。

这是我的database.yml:

 development: adapter: mysql2 database: se_development username: root pool: 5 timeout: 5000 sqlite_development: adapter: sqlite3 database: db/development.sqlite3 pool: 5 timeout: 5000 

这是模型:

 class Plot < ActiveRecord::Base establish_connection 'sqlite_' + Rails.env end 

为我工作。 希望这可以帮助。