如何通过Heroku在不同的数据库服务器上运行迁移?

时间:2017-11-01 13:24:11

标签: ruby-on-rails database heroku rails-migrations

我们需要在database.yml下的remote_database文件中添加数据库的凭据:

remote_database:
  adapter:
  encoding:
  username:
  ...

添加完所有内容后,从本地终端运行以下命令可以完成以下任务:

RAILS_ENV=remote_database rails db:migrate

我试图在Heroku上完成同样的事情。我在config/database.yml中推送了更改,并且我尝试执行以下命令:

RAILS_ENV=remote_database heroku run rake db:migrate
# or
heroku run rake db:migrate RAILS_ENV=remote_database

似乎Heroku完全忽略RAILS_ENVremote_database文件中config/database.yml env的设置。 Heroku总是在与DATABASE_URL相关的常规数据库服务器中进行更改。

有没有办法通过Heroku在不同的数据库服务器上运行迁移?

1 个答案:

答案 0 :(得分:1)

Heroku注入database.yml并使用4.1版本的Rails完全覆盖它或部分覆盖,并允许我们防止从Rails 4.1覆盖的方法。检查Heroku article

上有关Rails数据库连接行为的完整说明

所以,在你的情况下

  • 如果您使用的是Rails 4.1 + :您可以尝试将url密钥添加到database.yml,如上面链接Active Record 4.1+ Escape Valve部分所述。< / LI>
  • 如果您在4.1版本下使用Rails:初始化程序覆盖数据库连接。请参阅Heroku article(“否则,如果您使用的是旧版本的Rails,则需要使用初始化程序”部分)