由于之前数据库的表已经建好,所以不需要用django的 makemigrations 和 migrate 命令来迁移模型。本人使用了 python manage.py inspectdb > models.py 命令来反向生成模型。
最近服务器被挖矿?,菜鸡的我只能选择重装系统,然后数据库就丢失了。但 models.py 还在,所以可根据该文件来迁移模型。挖坑开始了。。。
复盘
按照网上的教程,先执行 python manage.py makemigrations phone ,再执行 python manage.py migrate 。如下,控制台一切显示正常:


但是数据库里却没有 specification 和 comment 这两张表,太诡异了。
排查
执行 python manage.py sqlmigrate phone 0001 命令,发现django并没有产生sql语句,所以不会生成这两张表。

回过头来看 models.py 文件,发现一处注释:


将 managed=False 设置为 True 即可生成表。问题解决了。。。

本文分享了在Django项目中遇到的模型迁移问题及解决方案。作者在重装系统后发现部分表未被迁移,通过调整models.py中managed属性设置为True成功生成了缺失的表。
2104





