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
第三四种方法,是网上很常见的,我推荐一个我访问次数较多的一个博客