django 在models和数据库没有变动的情况下,产生migrations文件:Applying * 0008_alter_*.py

现象

在models和数据库完全一致的情况下,执行如下代码时,却产生了新的migrations文件。而且每执行一次均会产生新的文件。

python manage.py makemigrations

原因在于运行缓存__pycache__文件与migrations文件不匹配。

按以下步骤操作,就可以消除此现象。

1.删除工程相关app下的__pycache__。

楼主执行的比较彻底,所以删除了工程下全部的缓存文件,但应该只要删除目标相关文件夹下的缓存文件即可。

执行到此步骤后,可以尝试执行python manage.py makemigrations,观察有没有继续生成新文件,如果没有生成。则以下步骤均不必执行,问题已经解决。

如果依然出现,则再删除一遍刚生成的__pycache__。

2.删除相关app下的migrations文件夹。

此操作要慎重,尤其是如果各app间有互相引用关系时,删migrations文件可能会导致,引用app找不到依赖文件而报错。

如果出现这种情况,只能一直删下去了,把所有相关的migrations全部删除。

3.重新在app中生成migrations文件。

python manage.py makemigrations  appname
python manage.py migrate  --fake #一定要加--fake

至此问题即可得到解决。

注意

如果以上三步之后问题依然存在,则只能全工程删除__pycache__和migrations文件夹,然后重复执行上述三步,问题一定可以解决的。

你可能感兴趣的:(django,python,后端)