Django迁移依赖顺序

时间:2018-04-06 16:33:24

标签: django django-models

我有一套相对复杂的Django模型。我正在尝试从一组新的迁移开始(rm -rf apps/*/migrations; bin/dev/manage.py makemigrations A B C...)。 makemigrations工作正常,没有循环依赖,但我在迁移时一直收到InconsistentMigrationHistory异常。下面是迁移之间的依赖关系图,简化为删除没有相关依赖关系的迁移,以及为了可读性而编译的应用程序名称: Migration dependencies  红色链接导致错误(每次运行migrate时都会出现错误),即使每次迁移都添加了run_before,也应该在其依赖之前运行:

A /迁移/ 0002_whatever.py:

...
run_before = [('P', '0001_initial'),]

这是错误文本。

django.db.migrations.exceptions.InconsistentMigrationHistory: Migration `P.migrations.0001_initial` is applied before its dependency `A.migrations.0002_whatever` on database 'default'.

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您还需要重置数据库。

在不重置数据库的情况下创建新迁移时,数据库与迁移之间的同步将丢失。

因此,当您尝试迁移新迁移时,Django会发现它不一致并失败。

出于同样的原因,清除所有迁移并生成新的迁移通常不是一个好主意。

想象一下这种情况在生产中发生。