1

我有一个在 heroku 上运行的 django 应用程序。我想在依赖于它们的任何代码上线之前运行我的 South 迁移。在快速查看当前推荐的做法后,我发现了两个建议的迁移程序。

建议 1

  1. 提交并推送所有更改
  2. heroku run python manage.py migrate <APP_NAME>为每个应用程序运行

这会在步骤 1 和 2 之间有一段时间,我的代码假设最新的模式已经到位,但数据库尚未更新。

建议 2

  1. 提交并推送所有数据库更改。
  2. 迁移。
  3. 推送所有代码更改。

这解决了前面的问题,但增加了部署过程的复杂性,总有一天我会搞砸的。

潜在的解决方案?

看来我可以避免建议 1 中的问题,python $MANAGE_FILE migrate <APP_NAME>通过使用调用我的每个应用程序的自定义 post_compile 脚本(按依赖顺序)将我的部署保持在一个步骤中。

我没有在任何地方看到这个推荐,所以我的问题是双重的。你能看出这种方法有什么潜在的问题吗?你有更好的方法吗?

4

1 回答 1

1

如果您的应用程序可以承受一些停机时间,在我看来,最简单的方法是

  1. 使用暂停您的应用程序$ heroku maintenance:on
  2. 一次迁移所有应用程序heroku run python manage.py migrate
  3. 重新启动您的应用程序:$ heroku maintenance:off

是否足够或您有更复杂的需求?

于 2012-10-16T15:33:04.057 回答