我搞砸了合并来自多个 git 分支的模式迁移。
基本上,所有更改都应用于数据库,但是当我这样做时
python manage.py schemamigration my_app --auto
它为最近应用的所有更改重新创建迁移文件。
我怎样才能解决这个问题?
(我在组合分支并运行 --delete-ghost-migrations 并重放它们时尝试变得聪明。不完全理解我在做什么):(
我搞砸了合并来自多个 git 分支的模式迁移。
基本上,所有更改都应用于数据库,但是当我这样做时
python manage.py schemamigration my_app --auto
它为最近应用的所有更改重新创建迁移文件。
我怎样才能解决这个问题?
(我在组合分支并运行 --delete-ghost-migrations 并重放它们时尝试变得聪明。不完全理解我在做什么):(
尝试:
python manage.py migrate your_app_name
以确保您没有任何尚未在迁移中的更改
然后:
python manage.py schemamigration --empty your_app_name name_of_migration
将进行空迁移,但其中包含最新信息。
这就是我认为发生的事情。
我有一个从上游/主分支分支出来的分支。
这没有我在本地 git 存储库中的数据库架构更改。
我在这个分支工作并合并到我的本地分支。
现在,来自合并分支的迁移文件在迁移文件中没有最新的架构更改。(是的,这就是它认为数据库的当前状态,并将其与我的 models.py 文件进行比较。这是解决问题的关键。)
下面是发生的事情的简化视图。
003 -- 在本地分支中进行的
更改 004 -- 在分支中进行的更改(来自上游/主)并且没有在 003 中引入更改
当我运行 schemamigration 它创建
005 -- 重新应用 003 中的更改
并运行迁移,但失败了。
我通过手动修改迁移文件的内容解决了这个问题。