前言
发现大部分的这种问题都是使用的mysql数据库。网络上说的删掉0001_initial.py方法并不适用。这里写一下使用默认数据库sqlite的解决办法。
问题描述
修改了model.py,但是运行python manage.py migrate无法完成表的更新:
解决办法
1、使用数据库shell模式进入(cd到django的manage.py目录,执行)
python manage.py dbshell
可以使用以下语句查看已有的表:
.table
再输入以下语句执行,删掉之前创建的数据库:
drop table django_migrations;
drop table "yourTableName"//替换掉yourTableName 不确定是否必要
//我不太确定是否只删掉django_migrations表,可以成功重建,我都删掉了
我的操作结果以下,我删掉django_migrations以及DXYdata_XXX三个表。(注意:最后退出一定要输入 .quit 退出,不要通过键盘退出。键盘强制退出会导致回滚)
E:\COSfiles\Desktop\DXY>python manage.py dbshell
SQLite version 3.29.0 2019-07-10 17:32:03
Enter ".help" for usage hints.
sqlite> .table
DXYdata_citydata auth_user_groups
DXYdata_dataafterpca auth_user_user_permissions
DXYdata_provincedata django_admin_log
auth_group django_content_type
auth_group_permissions django_migrations
auth_permission django_session
auth_user
sqlite> drop table django_migrations;
sqlite> .table
DXYdata_citydata auth_user
DXYdata_dataafterpca auth_user_groups
DXYdata_provincedata auth_user_user_permissions
auth_group django_admin_log
auth_group_permissions django_content_type
auth_permission django_session
sqlite> drop table DXYdata_citydata;
sqlite> drop table DXYdata_dataafterpca;
sqlite> drop table DXYdata_provincedata;
sqlite> .quit
2、接着再执行以下语句即可重建了
python manage.py makemigrations
python manage.py migrate --fake
成功了