Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何使用database.yml在Rails应用程序中使用多个数据库_Ruby On Rails_Database - Fatal编程技术网

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

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

我已经阅读了关于如何做到这一点的文档,但在实践中,我遇到了一些问题。 在我的应用程序中,我的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
如果尝试通过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