3

我搞砸了合并来自多个 git 分支的模式迁移。

基本上,所有更改都应用于数据库,但是当我这样做时

python manage.py schemamigration my_app --auto 

它为最近应用的所有更改重新创建迁移文件。

我怎样才能解决这个问题?

(我在组合分支并运行 --delete-ghost-migrations 并重放它们时尝试变得聪明。不完全理解我在做什么):(

4

2 回答 2

3

尝试:

python manage.py migrate your_app_name
以确保您没有任何尚未在迁移中的更改

然后:

python manage.py schemamigration --empty your_app_name name_of_migration
将进行空迁移,但其中包含最新信息。

于 2014-08-12T13:24:51.997 回答
1

这就是我认为发生的事情。

我有一个从上游/主分支分支出来的分支。
这没有我在本地 git 存储库中的数据库架构更改。
我在这个分支工作并合并到我的本地分支。

现在,来自合并分支的迁移文件在迁移文件中没有最新的架构更改。(是的,这就是它认为数据库的当前状态,并将其与我的 models.py 文件进行比较。这是解决问题的关键。)

下面是发生的事情的简化视图。

003 -- 在本地分支中进行的
更改 004 -- 在分支中进行的更改(来自上游/主)并且没有在 003 中引入更改

当我运行 schemamigration 它创建

005 -- 重新应用 003 中的更改

并运行迁移,但失败了。

我通过手动修改迁移文件的内容解决了这个问题。

于 2013-06-14T07:20:25.813 回答