Django2.2 ↑ mysqlclient版本报错误 不修改源码方法 mysqlclient 1.3.13 or newer is required; you have 0.9.3

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

上面个报错信息是在说你的mysqlclient等级太低了,需要更新的版本。也就是你使用的pymysql的等级是0.9.3,这里可以查看PyPi软件存储库查看pymysql目前只有0.9.3。

1.更换API驱动程序为mysqlclient

mysqlclient是Django官网推荐的驱动程序包,以Django3.0文档为例。mysqlclient与pymysql程序包对比,mysqlclient有安装依赖,但性能比pymysql更好;pymysql没有安装依赖,安装比较方便。PyPi软件存储库介绍安装依赖。Django官方文档中有明确写到对mysqlclient版本有要求。

mysqlclient¶
Django requires mysqlclient 1.3.13 or later.

2.不需要 修改源码 解决问题的方法

可能目前你使用mysqldb的方式是pymysql连接mysql,你会在你的项目同名文件夹__init__.py中或者settings.py文件开头写上以下两行代码。

import pymysql

pymysql.install_as_MySQLdb()

只需要在这里加上一行代码,来修改pymysql的版本。参考:stackoverflow

import pymysql

pymysql.version_info = (1, 3, 13, "final", 0)
pymysql.install_as_MySQLdb()

3.降级Django的版本

这里不需要说怎么操作了,一般来说你不会使用这个方法,如果你的项目是公司的项目那么多半是在升级。如果你是在选择使用Django哪个版本,可以具体查看每个版本的说明Release notes and upgrading instructions(发行声明和升级说明)

4.修改Django源码

site-packages>django>db>backends>mysql>base.py

将文件中大约35行开始的两行判断pymysql版本代码注释掉。

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

参考:

第一种方法,pymysql与mysqlclient对比

第二种方法,stackoverflow

第三四种方法,是网上很常见的,我推荐一个我访问次数较多的一个博客

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容