我已将database.yml
配置为包含“logging_development”作为用于表示其他数据库的标签。其中一个模型是使用“establish_connection”使用此“标签”连接到数据库。
我的模型看起来像这样:
类AdHistory<的ActiveRecord ::基
establish_connection“logging _#{RAILS_ENV}”
Rails服务器启动时工作正常,并建立模型与相关数据库的连接。但是当我启动ruby控制台并尝试使用该模型时,它使用database.yml
中的“开发”标签来建立连接。我已经调查了这个问题但无法找到解决方案。以下是database.yml
文件的示例:
development:
adapter: mysql
encoding: utf8
reconnect: true
database: ad_production
pool: 5
username: root
password: ********
socket: /tmp/mysql.sock
logging_development:
adapter: mysql
encoding: utf8
reconnect: true
database: ad_logging
pool: 5
username: root
password: ********
socket: /tmp/mysql.sock
我正在使用Ruby 1.8.7和Rails 2.3.8
答案 0 :(得分:1)
运行rails控制台时是否使用过RAILS_ENV = logging_development?如果不是,您应该这样做,因为默认的Rails环境是development
。因此,尝试使用此方法加载控制台以设置RAILS_ENV变量:
RAILS_ENV=logging_development scripts/rails console
答案 1 :(得分:0)
我找到了问题的答案。问题是我使用的是Multi_DB gem,它拦截了所有正在执行的SQL查询并将这些查询重定向到从数据库。这就是为什么那些查询没有针对我在“database.yml”中选择的数据库执行的原因。一旦multi_db连接无效,控制台就会按预期运行。使用“multi_db”gem的一个问题是它只接受连接名称为“_slave_database_”。因此,与database.yml文件中的multi_db gem的预期名称的任何偏差都将导致错误,并且不会针对所选数据库执行查询。