Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 撤消或重置django中伪造的迁移_Python_Django_Django Models - Fatal编程技术网

Python 撤消或重置django中伪造的迁移

Python 撤消或重置django中伪造的迁移,python,django,django-models,Python,Django,Django Models,在我基于django-1.8.2的项目中,我遇到了一些迁移问题,所以我运行了命令 python manage.py migrate --fake 但是它伪造了这个命令所要进行的所有迁移。但是现在,python manage.py migrate命令没有执行或应用任何迁移。我想撤消伪造的迁移,以便将迁移应用于数据库。我想将现有迁移应用于数据库。来自: 请注意,使用--false可能会使迁移状态表处于需要手动恢复才能正确运行迁移的状态 因此,我建议您只需从django_migrations表中删除

在我基于django-1.8.2的项目中,我遇到了一些迁移问题,所以我运行了命令

python manage.py migrate --fake
但是它伪造了这个命令所要进行的所有迁移。但是现在,
python manage.py migrate
命令没有执行或应用任何迁移。我想撤消伪造的迁移,以便将迁移应用于数据库。我想将现有迁移应用于数据库。

来自:

请注意,使用--false可能会使迁移状态表处于需要手动恢复才能正确运行迁移的状态


因此,我建议您只需从
django_migrations
表中删除伪造的迁移。

对于每个应用程序,您可以将迁移伪造回伪造之前的位置

python manage.py migrate --fake myapp 00XX_last_migration
其中
00XX\u last\u migration
是您为应用程序
myapp
实际运行的最后一次迁移

或者,如果您尚未实际运行该应用程序的任何迁移:

python manage.py migrate --fake myapp zero

如果要查看所有应用程序的所有迁移,可以运行
python manage.py showmigrations
。从那里,您可以确定要回滚到哪个迁移。在2020年9月,Django v.3.0.8运行得非常好。我认为值得一提的是,如果伪造的迁移是在数字上,比如说
0018
,那么您应该使用上一次真正的迁移运行上述命令,即eg
0017
@jfunk,这向我建议,从
0018
中减去一,得到
0017
。但有可能,例如,您从
0015
开始,并且
-fake
标记为
0016
0017
0018
。在这种情况下,您可能会伪造回
0015
。打得好,我只是想澄清一下,您想回到上一个真实的位置,因为我刚刚遇到了这个问题,这并不明显。无论您是使用
--false
还是手动添加/删除
django_migrations
表中的行,文档中的警告都适用。这两种方法都可能导致数据库和
django_迁移
表不同步,这可能很难解决。