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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:酷酷鲨 设计师:CSDN官方博客 返回首页
评论

打赏作者

懒笑翻

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值