如何通过 Heroku 运行 在不同的数据库服务器上进行迁移?
How to run migrations on a different database server through Heroku?
我们需要在 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_ENV
或 config/database.yml
文件中 remote_database
env 的设置。 Heroku 总是在与其连接的常规数据库服务器中进行更改,这些更改可以在 DATABASE_URL
.
中找到
有没有办法通过 Heroku 运行 在不同的数据库服务器上进行迁移?
Heroku 注入 database.yml
并在 4.1 版本下用 Rails 完全覆盖它或部分覆盖它并允许我们防止从 Rails 4.1 覆盖。查看 Heroku article
上关于 Rails 数据库连接行为的完整解释
所以,在你的情况下
- 如果您使用的是 Rails 4.1+:您可以尝试将
url
键添加到 database.yml
中,如 Active Record 4.1+ Escape Valve
上面的部分 link.
- 如果您在 4.1 版本下使用 Rails:通过初始化程序覆盖数据库连接。请参阅 Heroku article("Otherwise if you are using an older version of Rails you will need to use an initializer" 部分)
我们需要在 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_ENV
或 config/database.yml
文件中 remote_database
env 的设置。 Heroku 总是在与其连接的常规数据库服务器中进行更改,这些更改可以在 DATABASE_URL
.
有没有办法通过 Heroku 运行 在不同的数据库服务器上进行迁移?
Heroku 注入 database.yml
并在 4.1 版本下用 Rails 完全覆盖它或部分覆盖它并允许我们防止从 Rails 4.1 覆盖。查看 Heroku article
所以,在你的情况下
- 如果您使用的是 Rails 4.1+:您可以尝试将
url
键添加到database.yml
中,如Active Record 4.1+ Escape Valve
上面的部分 link. - 如果您在 4.1 版本下使用 Rails:通过初始化程序覆盖数据库连接。请参阅 Heroku article("Otherwise if you are using an older version of Rails you will need to use an initializer" 部分)