Django开发--migration二三事

殷耀
2023-12-01

Django开发----关于数据添加前忘记migration

前因:

        数据库中有一张空表,需要在模型类中添加字段,进行数据迁移后,再导入数据.
而我脑壳宕机,直接进行了数据导入

后果:

       导入的数据文件将数据库中的空表覆盖,直接导致数据表中多出没有进行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,目前项目还没出现因为这项操作引发的其他问题.
             如有错误,还望指正.
             如有帮助,不胜荣幸

 类似资料: