生产中的DB连接问题

时间:2009-05-21 15:16:23

标签: ruby-on-rails ruby

我的应用程序和开发中有一个单独的数据库用于一个模型 模式连接正常,但在生产中却没有。

production:
  adapter: mysql
  host: myhost
  username: root
  password:
  database: production_db

users_production:
  adapter: mysql
  host: myhost
  username: root
  password:
  database: other_db

连接到其他数据库的模型称为User但是 它在other_db中引用的表是smf_users,所以我的User.rb看起来像 这样:

class User < ActiveRecord::Base
  establish_connection "users_#{RAILS_ENV}"
  set_table_name "smf_users"
end

在制作中我遇到了这个错误:

Mysql::Error: Table 'production_db. smf_users' doesn't exist:

请注意它是如何尝试连接到错误的数据库的,所以不是 找到正确的表格。正如我所说,这适用于开发模式。

有什么建议吗?

3 个答案:

答案 0 :(得分:1)

我发现在使用多个数据库时,在执行关联时会出现奇怪的错误。有没有机会你有另一个模型belongs_to :users并且你期望它能够正常工作?否则,您必须查看缓存 - 很可能Rails无法正确缓存额外数据库的连接数据。

答案 1 :(得分:0)

尝试:

establish_connection configurations[RAILS_ENV]["users_#{RAILS_ENV}"]
User.connection

establish_connection需要连接信息的哈希值。这应该从database.yml返回。

您可能需要检查日志中是否有以下消息:

“未配置users_production数据库”

如果无法通过database.yml中的字符串找到配置,那么ActiveRecord :: Base将抛出该消息。

答案 2 :(得分:0)