Heroku 二级数据库上的数据库迁移

Database Migrations on Secondary Database on Heroku

我们公司从另一家公司获得了一个应用程序,所以我有点不了解他们过去是如何做到这一点的。目前在 Heroku 中有两个应用程序。生产和暂存应用程序。为清楚起见,下面是基本的应用程序设置。

Production App
   WHITE // Primary database
   BLACK // Secondary database linked to Staging App

Staging App
   // No databases

登台应用程序具有指向 BLACK 数据库 URL 的配置变量。

我正在尝试 运行 heroku run rake db:migrate 在我们的暂存应用程序上,但注意到该数据库已链接到辅助生产 BLACK 数据库。

如果我运行

$ heroku run rake db:migrate -a production

它将更新生产中的主 WHITE 数据库,但我想先在辅助 BLACK 数据库上进行测试。

如果我运行

$ heroku run rake db:migrate -a staging

我收到以下错误

Error: You must install at least one postgresql-client-<version> package.
rake aborted!
Error dumping database
...
Tasks: TOP => db:structure:dump
(See full trace by running task with --trace)

如何使用 rake 命令定位辅助 BLACK 数据库?

检查您的 Gemfile 以确保您的数据库驱动程序 psql 不在仅生产块中。

使用 Heroku 支持,我无法让它与当前配置一起使用。所以最后我决定为我们的登台应用程序创建一个数据库。从生产中导入最新的转储文件。 运行 heroku run rake db:migrate 反对分期。

我仍然遇到与原来 post 相同的错误(参见原始问题)。但是当我检查登台数据库时,架构已正确更新。 Heroku 向我指出了以下 Whosebug discussion,这似乎表明这可能是一个 Rails 3 错误。

为清楚起见,以下解决方案:

Production App
  WHITE // Primary database
  BLACK // Deleted

Staging App
  Gray // Primary database