首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何通过database.yml在Rails应用程序中使用多个数据库

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

Stack Overflow用户
提问于 2012-04-28 12:55:06
回答 1查看 4.9K关注 0票数 5

我已经阅读了关于如何做到这一点的文档,但在实践中,我遇到了一些问题。在我的应用程序中,我有两个不同的数据库,如下我的database.yml文件中所述。

代码语言:javascript
代码运行次数:0
运行
复制
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数据库构建的,而MYSQL数据库是我在外部构建的。我将SQLite数据库复制到/db目录中。所以在我的主要模型中,当我说:

代码语言:javascript
代码运行次数:0
运行
复制
  class Plot < ActiveRecord::Base

  establish_connection :development
  set_table_name "stock_test"
  set_primary_key :id

一切都做得很好。但是,当我将其更改为:

代码语言:javascript
代码运行次数:0
运行
复制
 establish_connection :sqlite_test
 set_table_name "plots"

并尝试通过Rails控制台访问该数据库,我收到一个错误消息:

代码语言:javascript
代码运行次数:0
运行
复制
>>ActiveRecord::AdapterNotSpecified: database configuration does not specify adapter

我不知道为什么,因为database.yml文件明确指定了适配器?然而,当我在我的模型中手工操作时,一切都完全正常。

代码语言:javascript
代码运行次数:0
运行
复制
class Plot < ActiveRecord::Base
establish_connection(:adapter => "sqlite3", :database => "db/sqlite_test.sqlite3", :pool => 5 )

为什么当我手动指定database.yml中的内容时,所有这些都可以工作,而当我只使用database.yml引用时却不起作用?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-08 09:45:34

我试着复制,并让它工作。这与命名约定有关:您处于开发模式,AR将查找开发标记,在您的示例中,sqlite不存在该标记。

这是我的database.yml:

代码语言:javascript
代码运行次数:0
运行
复制
development:
  adapter: mysql2
  database: se_development
  username: root
  pool: 5
  timeout: 5000

sqlite_development:
  adapter: sqlite3
  database: db/development.sqlite3
  pool: 5
  timeout: 5000

以下是模型:

代码语言:javascript
代码运行次数:0
运行
复制
class Plot < ActiveRecord::Base
  establish_connection 'sqlite_' + Rails.env
end

对我很管用。希望这能有所帮助。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10360705

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档