Ruby on rails 如何使用database.yml在Rails应用程序中使用多个数据库
我已经阅读了关于如何做到这一点的文档,但在实践中,我遇到了一些问题。 在我的应用程序中,我的database.yml文件中有两个不同的数据库,如下所述Ruby on rails 如何使用database.yml在Rails应用程序中使用多个数据库,ruby-on-rails,database,Ruby On Rails,Database,我已经阅读了关于如何做到这一点的文档,但在实践中,我遇到了一些问题。 在我的应用程序中,我的database.yml文件中有两个不同的数据库,如下所述 sqlite_test: adapter: sqlite3 database: db/sqlite_test.sqlite3 table: plots pool: 5 timeout: 5000 development: adapter: mysql2 encoding: utf8 recon
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
如果尝试通过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 )
class Plot“sqlite3”,:database=>“db/sqlite_test.sqlite3”,:pool=>5)
为什么当我手动指定database.yml中的内容时,所有这些都能工作,而当我只使用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
class Plot
为我工作。希望这能有所帮助。如果您有两个具有不同键/值的
开发:
,这是否不起作用?
class Plot < ActiveRecord::Base
establish_connection 'sqlite_' + Rails.env
end