代码之家  ›  专栏  ›  技术社区  ›  Arslan Ali

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

  •  1
  • Arslan Ali  · 技术社区  · 7 年前

    我们需要在中添加数据库的凭据 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 或的设置 远程_数据库 环境输入 配置/数据库。yml公司 文件Heroku总是在与其连接的常规数据库服务器中进行更改,这些更改可以在 DATABASE_URL .

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

    1 回复  |  直到 7 年前
        1
  •  1
  •   Arslan Ali    7 年前

    Heroku注射 database.yml 并在4.1版本下使用Rails完全覆盖它,或部分覆盖它,从而为我们防止从Rails 4.1覆盖提供了一种方法。检查关于Rails数据库连接行为的完整解释 Heroku article

    那么,在你的情况下

    • 如果您使用的是Rails 4.1+ :您可以尝试添加 url 您的 数据库yml公司 Active Record 4.1+ Escape Valve 以上链接的部分。
    • :通过初始值设定项重写数据库连接。看见 Heroku article (“否则,如果您使用的是旧版本的Rails,则需要使用初始值设定项”部分)