[英]DB connection problem in production
我在我的应用程序中为一个模型有一个单独的数据库,在开发模式下,连接正常工作,但在生产环境中却无法正常工作。
production:
adapter: mysql
host: myhost
username: root
password:
database: production_db
users_production:
adapter: mysql
host: myhost
username: root
password:
database: other_db
连接到另一个数据库的模型称为用户,但是在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:
请注意它是如何尝试连接到错误的数据库,因此找不到正确的表。 正如我所说,这在开发模式下有效。
有什么建议么?
我发现在使用多个数据库时,进行关联时会出现奇数错误。 您是否有可能在这里找到了另一个模型,它belongs_to :users
并且您希望它可以正常工作? 否则,您必须查看缓存-Rails很可能无法正确缓存额外数据库的连接数据。
尝试:
establish_connection configurations[RAILS_ENV]["users_#{RAILS_ENV}"]
User.connection
Establishment_connection需要连接信息的哈希。 如果从database.yml返回,则应该返回。
您可能要检查日志中是否出现类似以下的消息:
“未配置users_production数据库”
如果无法在database.yml中通过字符串找到配置,则该消息将由ActiveRecord :: Base抛出。
您可能会发现这很有用: http : //magicmodels.rubyforge.org/magic_multi_connections/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.