我有一个在 heroku 上运行的 django 应用程序。我想在依赖于它们的任何代码上线之前运行我的 South 迁移。在快速查看当前推荐的做法后,我发现了两个建议的迁移程序。
建议 1
- 提交并推送所有更改
heroku run python manage.py migrate <APP_NAME>
为每个应用程序运行
这会在步骤 1 和 2 之间有一段时间,我的代码假设最新的模式已经到位,但数据库尚未更新。
建议 2
- 提交并推送所有数据库更改。
- 迁移。
- 推送所有代码更改。
这解决了前面的问题,但增加了部署过程的复杂性,总有一天我会搞砸的。
潜在的解决方案?
看来我可以避免建议 1 中的问题,并python $MANAGE_FILE migrate <APP_NAME>
通过使用调用我的每个应用程序的自定义 post_compile 脚本(按依赖顺序)将我的部署保持在一个步骤中。
我没有在任何地方看到这个推荐,所以我的问题是双重的。你能看出这种方法有什么潜在的问题吗?你有更好的方法吗?