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可以知道执行了哪个迁移文件
在您的情况下,没有要应用的迁移
,因为新的create0003_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