Python django migrate“;没有要应用的迁移。”;

Python django migrate“;没有要应用的迁移。”;,python,django,migration,database-migration,Python,Django,Migration,Database Migration,我知道为什么当我进行migrate时,它会告诉我没有要应用的迁移,但我只是不知道如何修复它 事情就是这样 我在模型字段中添加了一个名为update的新字段。 我做了一个迁移创建了一个名为0003_uxxxxx.py的文件,然后我做了一个迁移,现在效果很好 但是由于某种原因,我不得不从同一个模型中删除update字段。 所以我删除了它(更像是注释而不是真正删除代码),然后我做了migration和migrate,删除了数据库中的字段。(已创建0004_uxxxxx.py) 但是,唉……出于某种原因

我知道为什么当我进行
migrate
时,它会告诉我
没有要应用的迁移
,但我只是不知道如何修复它

事情就是这样

我在模型字段中添加了一个名为
update
的新字段。 我做了一个
迁移
创建了一个名为
0003_uxxxxx.py的文件
,然后我做了一个
迁移
,现在效果很好

但是由于某种原因,我不得不从同一个模型中删除
update
字段。 所以我删除了它(更像是注释而不是真正删除代码),然后我做了
migration
migrate
,删除了数据库中的字段。(已创建
0004_uxxxxx.py

但是,唉……出于某种原因,我不得不再次添加该字段(这就是我只注释掉的原因),但在我执行
迁移之前
我删除了
0003_xxxx.py和0004_xxxx.py
文件,我想删除这两个文件,因为这实际上与
0003_xxxx.py
的配置相同或几乎相同,所以我觉得将
0003_xxxx.py和0004_xxxx.py
放在这里是毫无意义的……还有当我投入生产时,这只是python运行的另一个额外步骤

删除这两个文件后,我进行了
迁移
,这将创建另一个
0003_xxxx.py
,但当我进行
迁移
时,它会给我一条消息,即
没有要应用的迁移

我知道,通过删除
0003_xxxx.py
并获取原始
0003和0004
,然后执行另一次
迁移(创建0005_xxxx.py),然后迁移
,将进行更改。我知道这一点,因为我并没有真正删除原始的
0003和0004
我把它移到了某个地方,以防发生这种情况

但为什么会这样呢?有没有办法解决这个问题


提前感谢您的回复

django在数据库中按表记录当前的
迁移
日志

比如:

迁移是一个链式结构,它依赖于父节点。通过这个表,django可以知道执行了哪个迁移文件

在您的情况下,
没有要应用的迁移
,因为新的create
0003_xxxx.py
是此表中的记录,您可以通过删除此表中的记录来修复它


如果您想删除一些迁移文件,您需要查看。

甚至只需从数据库中删除最后一个迁移行,您可以尝试以下操作

首先,检查要删除的行

SELECT * FROM "public"."django_migrations";
现在从上面的查询中选择最后一个
id
,并执行

DELETE FROM "public"."django_migrations" WHERE "id"=replace with your Id;

运行
/manage.py migrate

,这意味着我需要运行挤压命令,如..
manage.py squashmigrations myapp 0003
?然后再次运行
迁移
以创建一个新的
0003
,以便正确地
迁移
?在此之前,您需要删除表django_migrationsdarn中的记录003 004,这意味着数据库中的id将不连续且消失……但最终我在
django_迁移中删除了它们
,我不需要这样做
sqashmigrations
但它仍然有效,因为我尝试使用
sqashmigrations app_name 0003
它说当您想要将多个迁移文件设置为一个时,不会使用任何迁移匹配sqashmigrations,它;这意味着如果有人说创建了大约100个迁移文件,我可以
sqashmigrations
将它们合并到一个文件
0001.py