8

我有一个应用程序,目前有 35 个南迁移。这些在设置新部署时需要一段时间才能完成(我们经常创建新部署),并且应用程序在不断发展——添加更多迁移。此外,迁移包括一些潜在的复杂数据迁移和一些破坏 SQLite3 的自定义迁移(现在不是一个大问题,因为一切都在 Postgres 上,但能够建立一个快速的测试环境很好),通常只是更多可能出错的事情。

我们所有的部署和开发人员都是最新的,我想清除所有应用程序的迁移并创建一个捕获应用程序当前状态的单个初始迁移 (0001),然后继续从那里。几年前我用一个不同的应用程序做了这个,效果很好,但是我忘记了这个过程是什么,并且忘记了解释如何做的博客文章。任何人都可以为我分解这个过程吗?

4

1 回答 1

13

我想通了(还不错)。要设置迁移重置,我执行以下操作:

rm <app-dir>/migrations/*
python manage.py schemamigration <app-name> --initial
python manage.py migrate <app-name> 0001 --fake  --delete-ghost-migrations

我将更改提交到存储库,然后对于其他地方的代码的每次部署,运行:

python manage.py migrate <app-name> 0001 --fake --delete-ghost-migrations

确保您在上次迁移到其他任何地方之间没有添加任何新内容并且您重置了内容,否则新的 0001 迁移将与架构不匹配!

注意事项:请参阅 guettli 的评论(以及我的回复)

于 2012-10-10T15:30:07.440 回答