Django开发--migration二三事

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,目前项目还没出现因为这项操作引发的其他问题.
             如有错误,还望指正.
             如有帮助,不胜荣幸

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值