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。
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看了看
圖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相關源碼片段:
從我前面的圖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離線包下載並安裝
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
解決方法請移步: https://blog.csdn.net/c_lanxiaofang/article/details/106326233