早教吧 育儿知识 作业答案 考试题库 百科 知识分享
早教吧百科知识频道 --> IT百科 -->python -->

django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.2

场景/问题/来源
django开发

django2.2不支持pyMySQL,但2.2是LTS,有想过试试mysqldb,但是MySQLDB又不支持python3。。。。运行后,先后出现两次报错,的确让人头大。

知识/回答

今天在使用python3.7+django2.2+pymysql时遇到这个错误,

django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.2

别急,这主要是django2.2内部的一个版本限制在作怪

处理方案:

1.修复源码

按照文中配置,报错django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.

原因:django2.2和pymysql版本不匹配。mysqldb不支持python3.

解决办法:找到python安装目录下的site-packages/django/db/backends/mysql

例如我的win下

C:\Python37\Lib\site-packages\django\db\backends\mysql(python安装目录)

第一步:打开base.py,先注释掉以下内容:     

if version < (1, 3, 13):           raise ImproperlyConfigured(‘mysqlclient 1.3.13 or newer is required; you have %s.’ % Database.version)   

第二步,修改operations.py的第146行的decode修改为encode

启动应用出现报错信息:File “C:\Python37\lib\site-packages\django\db\backends\mysql\operations.py”, line 146, in last_executed_query   

query = query.decode(errors=‘replace’)   

AttributeError: ‘str’ object has no attribute ‘decode’   

解决办法:

打开此文件把146行的decode修改为encode,如下所示:

query = query.decode(errors='replace')

改成:

query = query.encode(errors='replace')