当前分类:python>>正文

django踩坑记django.db.utils.ProgrammingError:1146

来源:互联网   时间:2022年6月15日   编辑

今天又踩坑了,踩坑不要紧,只要能解决问题就行。

前几天把我开发的一款程序开源了,有朋友反映在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文件中也有这么一句

image

就是上面红框中的这几句

果断注释掉。

再次执行迁移makemigrations

终于是成功了

image

然后再执行migrate,也成功了。

运行程序,ok,也成功了。

不过,从这情况来看,我这套程序的代码还得再优化一下才行,这样子写是有点不妥啊。

抽个空再好好完善一下呢。

[猜你喜欢]

标签: 兼职