美文网首页《Django By Example》
django之make migrate报错invalid def

django之make migrate报错invalid def

作者: 奇策十二 | 来源:发表于2018-09-23 23:16 被阅读4次
    小贴士

    前文讲述的是循环于“找到方案-未生效”的极其吐血的过程,如果需要看解决方案请拉至最后。


    事情经过

    组内同事搭建了一个自动化测试平台,周末在家git clone下来瞅瞅,于是就按照以下步骤开始操作:
    python manage.py makemigrations
    嗯,报错了,查找原因为缺少数据库连接通信模块,于是去下载了对应版本的mysqlclient(这一步比较容易排查)。我以前用过django但是不知道为什么缺少这个模块。
    好的,完毕之后这一步顺利了,开始下一步:
    python make migrate

    然而还是有问题:


    不合法默认值.png

    于是网上查找了一下解决方案,在stackoverflow上找到一篇相近的方案,大体意思是去django文档查询一下该字段的允许类型。发现CharField只要求max_lengt必填,其余不是必须。

    实在是没辙,就去询问了该同事,按照指示去github拉取了dev分支,重复上述操作后依然报这个错。然后群里的大佬们纷纷支招:

    • 把default值设置为空
    • 把default值设置为英文
    • 把MySql编码(my.ini文件下配置)默认设置为utf8
    • 删除miagrations文件夹与数据库重新来一遍
    • 换用sqlite3数据库(???

    好吧,各位经验很丰富,但是并没有解决这个棘手的问题。

    解决方案

    群里沉默了一会儿,做平台的这位同事给出了一个解决方案,运行了如下命令:
    python manage.py migrate --fake-initial

    终于是生效了:


    来之不易的一堆‘OK’.png

    后记

    解决了问题当然要知道为什么,然后就去网上询问这条命令的作用:

    将初始化的迁移脚本标记为已映射

    这是搜索“make migrate”报错得到的一些结果(我查询时搜索的是invalid default value),好吧,虽然报错不一样,但总算是解决了。不过目前对这个命令的理解还不是很深刻,之后在使用的过程中在慢慢加强。

    相关文章

      网友评论

        本文标题:django之make migrate报错invalid def

        本文链接:https://www.haomeiwen.com/subject/pifqoftx.html