解决思路

1、查看migration记录文件

2、重置APP

3、校验重置是否正确

4、删除migration记录文件

5、注册APP

6、再次执行生成数据库命令

          Tips:


问题:

Django使用models.py创建数据库的时候,有时会出现无法刷新最新代码,在已修改过的地方一直报错的问题,这可能是migration缓存文件导致的,需要重置一下migration

前提:

我们在models.py中执行的创建数据库及表的命令都会以.py的形式记录在migration文件夹中

图片

解决:

1、查看migration记录文件

python3 manage.py showmigrations

图片

2、重置APP

python3 manage.py migrate --fake explore zero

注意:fake前面的符号是两个 -  ;app01 是自己要修改的APP名字

图片

图片

3、校验重置是否正确

  • 执行 python3 manage.py showmigrations,检查migration记录文件

  • 如果只有要重置的APP前面 [x] 变成了 [ ] 则成功;如果其他APP前面的 [x] 也变成了 [ ] ,则需要再次执行重置已改变APP的命令

例如:想要修改app01,但是重置APP后app02前面 [x] 也变成了 [ ] ,则执行 python3 manage.py migrate --fake app02 zero

图片

4、删除migration记录文件

手动删除migrations文件夹下除了__init__.py的所有.py文件,也包括pycache文件夹

5、注册APP

为重置APP生成 0001_initial.py的migrations记录文件

python3 manage.py makemigrations

6、再次执行生成数据库命令

python3 manage.py makemigrations
python3 manage.py migrate

图片

查看数据库

图片

Tips:

执行命令时报错:表已存在

django.db.utils.OperationalError:(1050, "Table 'table_name' already exists")

图片

命令后加入 --fake-initial 即可

python3 manage.py migrate --fake-initial

  

---THE END ---

更多内容请关注同名微信公众号

  

Logo

一站式 AI 云服务平台

更多推荐