数据库中有一张空表,需要先在模型类中添加字段,进行数据迁移后,再导入数据.
而我脑壳宕机,直接进行了数据导入
导入的数据文件将数据库中的空表覆盖,直接导致数据表中多出没有进行migration而产生的字段
因为没有进行数据迁移,所以没有生成迁移文件.相应的,数据库迁移表中没有此次迁移记录
Plan A:删库
1.前提你手中有原来的数据库文件,可以在之后重新进行数据导入
2.执行删库命令(想想还有点小激动呢~)
drop database 数据库名;
3.删除项目的migration模块中的除了__init__.py文件外的所有文件
4.创建新数据库,进行数据迁移
python manage.py makemigrations
python manage.py migrate
5.数据导入,一切OK
Plan B:不删库,不跑路
首先抓住我们的主要矛盾,没有迁移记录.那么在不删库的情况下能把我们的迁移记录存储在迁移表中,岂不完美
1.删除数据表中因先进行数据导入而出现的字段
alter table 表名 drop column 属性名; //删除字段
2.进行数据迁移,建议对特定app进行迁移.
注 : 迁移命令调用默认为全局,即对所有最新更改的model或迁移文件进行操作。如果想对部分app进行操作,就要在其后追加app name(你的应用名)
python manage.py makemigrations appname
python manage.py migrate appname
3.数据导入
这样完美解决了在不删库的前提下,怎样生成迁记录的问题
ps : 以上只是我的一些浅薄了解,完全是为了解决眼前的bug,目前项目还没出现因为这项操作引发的其他问题.
如有错误,还望指正.
如有帮助,不胜荣幸