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

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章