今天又踩坑了,踩坑不要紧,只要能解决问题就行。
前几天把我开发的一款程序开源了,有朋友反映在Centos7上面安装的时候出错,internet sever error,查看了下错误日志,才发现centos7自带的sqlite版本都是3.7的,而我开发的这款程序当时用的3.9版本的Sqlite,版本太低不能用。
只能让网友自行升级sqlite或者升级centos7到centos8版本了。
但是好像,这个升级难度有点大。
于是想着换用mysql,这样,用户在遇到版本不对的时候,处理起来就没那么麻烦了。
那么问题就出在这了,django sqlite数据库换到mysql是要重新生成数据库文件的。
在执行python manage.py makemigrations的时候,就出现了报错了:
django.db.utils.ProgrammingError: (1146, “Table ‘lekuwang.tags’ doesn’t exist”)
字面意思理解,就是数据库表tags这个不存在。
好嘛,忘了删除之前使用sqlite数据库时候生成的迁移记录了。
将应用下migrations文件夹中除了__pycache__及__init__.py之外的所有文件全删除。
仍然是报错!
django.db.utils.ProgrammingError: (1146, “Table ‘lekuwang.tags’ doesn’t exist”)
奇了怪了。
在csdn查了查这个问题,都是说要删除迁移记录文件,但是我已经全部删除了啊?
后面,看到一个朋友说views.py中提前使用objects导致迁移不成功。
于是我想到了我的views.py文件中也有这么一句
就是上面红框中的这几句
果断注释掉。
再次执行迁移makemigrations
终于是成功了
然后再执行migrate,也成功了。
运行程序,ok,也成功了。
不过,从这情况来看,我这套程序的代码还得再优化一下才行,这样子写是有点不妥啊。
抽个空再好好完善一下呢。
标签: