我的应用程序和开发中有一个单独的数据库用于一个模型 模式连接正常,但在生产中却没有。
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:
请注意它是如何尝试连接到错误的数据库的,所以不是 找到正确的表格。正如我所说,这适用于开发模式。
有什么建议吗?
答案 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)