美文网首页
Django2.2 ↑ mysqlclient版本报错误 不修改

Django2.2 ↑ mysqlclient版本报错误 不修改

作者: 分不清洪赵白 | 来源:发表于2020-03-09 15:25 被阅读0次
    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

    第三四种方法,是网上很常见的,我推荐一个我访问次数较多的一个博客

    相关文章

      网友评论

          本文标题:Django2.2 ↑ mysqlclient版本报错误 不修改

          本文链接:https://www.haomeiwen.com/subject/dydpdhtx.html