【问题标题】:switch database stage in rails在 Rails 中切换数据库阶段
【发布时间】:2012-03-26 13:23:43
【问题描述】:

用于显示数据的数据库似乎与我可以在 rails 控制台中使用的数据库不同。

我尝试运行 rails dbconsole 并得到:

Couldn't find database client: sqlite3. Check your $PATH and try again.

我的测试和开发数据库适配器是 SQlite3,我的生产适配器是 MYSQL。

我需要我的 rails 控制台来连接到我的生产数据库。

【问题讨论】:

  • “舞台”是错误的词;您正在寻找切换“环境”。您的环境可能不应该使用不同的数据库引擎,您应该在 config/database.yml 中修复它。目前尚不清楚您是否有一个正在开发的功能性 SQlite3 数据库已填充,还是一个功能性 MySQL 数据库正在生产中已填充。你能澄清一下吗?
  • 感谢您向我澄清这一点。两个数据库都已填充。我猜测我在 rails 控制台中连接的数据库是开发,这是我能想到的唯一解释。我能够通过您在下面给出的答案连接到生产环境。

标签: database ruby-on-rails-3 rails-console


【解决方案1】:

请尝试以下命令。

RAILS_ENV=production rails c

【讨论】:

    【解决方案2】:

    如果要连接到生产数据库,则需要在执行consoledbconsole 命令之前将RAILS_ENV 环境变量设置为production

    “Rails 控制台”和dbconsole 命令引用不同的东西:

    如果你想直接连接到你的数据库来执行 SQL 语句,使用

    $ RAILS_ENV=production ./script/rails dbconsole
    

    如果您尝试加载“Rails 控制台”,即可以访问 Rails 环境的交互式 Ruby shell,请运行

    $ RAILS_ENV=production ./script/rails console
    

    【讨论】:

    • 谢谢!我能够使用生产数据库!我是否应该运行类似的命令来将数据播种到生产数据库,因为运行 rake db:seed 会加载到不同的数据库中。谢谢。
    • 是的。环境总是通过RAILS_ENV 环境变量指定。如果你想为生产数据库做种,你必须运行RAILS_ENV=production rake db:seed
    猜你喜欢
    • 2011-12-27
    • 1970-01-01
    • 1970-01-01
    • 2021-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-18
    • 2014-08-28
    相关资源
    最近更新 更多