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

译文:django.core.exceptions。需要mysqlclient 1.3.13或更新版本;你有0.9.3。

 

Django3.0 django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required_mysql

File "C:\Users\Acer\AppData\Local\Programs\Python\StudeyDjango\lib\site-packages\django\db\backends\mysql\base.py", line 37, in <module>
raise ImproperlyConfigured('mysqlclient 1.3.13 or newer is required; you have %s.' % Database.__version__)
django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.

 

一脸懵逼,特地再去pip看了看    

Django3.0 django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required_django_02

图1

mysqlclient 版本是1.4.6好吗 , PyMySQL 是 0.9.3

 

下面说一下解决方案:

 

一、如果你是用的pymysql代替的mysqlclient,最迅速的解决方法就是在该项目的_init_.py文件中增加L3和L4的代码

import pymysql

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

如此再启动项目便不会再报上面的错误了,

这样做的原因是:

根据Traceback提示查看抛出异常处的代码片段(base.py", line 37):

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

这里有个版本判断校验的是Database库的version_info属性,当版本低于要求便raise了Exception;
那pymysql中的version_onfo属性是怎么返回的呢?找到pymysql相关源码片段:

Django3.0 django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required_mysql_03

 从我前面的图1知道,pymsql的版本本来是0.9.3,而源码中直接将版本改成1.3.12;

因此我们只要在我们项目下的_init_.py文件中加上版本设定即可

 

二、原则上还是建议,直接使用mysqlclient,而非用pymysql代替。

mysqlclient的安装:

由于系统缺少对应的操作库,直接pip install mysqlclient会出错;

windows

可以在 ​​https://www.lfd.uci.edu/~gohlke/pythonlibs/​​  找mysqlclient离线包下载并安装

Django3.0 django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required_mysql_04

ubuntu系

sudo apt install libmysqlclient-dev
pip install mysqlclient

centos系

yum install mysql-devel
pip install mysqlclient

 

安装完成以后要使用mysqlclient的话,记得把我们前面在_init_.py文件中增加的那两行代码注释或者删掉

 

接着运行可能会出现以下错误:

django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module. 
Did you install mysqlclie