#彻底解决# mysqlclient 1.3.13 or newer is required; you have 0.9.3 错误

当我们启动django项目时,有时会遇到如下错误:

...
    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.

出现上述错误的主要原因是mysqlclient(MySQLdb)版本过低,或pymysql替代mysqlclient时生成的版本过低,这里列举了三种解决方法:

方法一(推荐)

mysqlclient产生的原因之一就是为了解决在某些情况下pymysql不可用的问题,当pymysql不可用时,我们可以使用mysqlclient代替,具体操作如下:

yum install mysql-devel gcc gcc-devel python-devel
pip3 install mysqlclient

如果已经安装mysqlclient,可以尝试升级mysqlclient:

pip3 install -U mysqlclient

安装mysqlclient前要安装相关依赖,在安装完mysqlclient后,如果在项目同名文件夹下的__init__.py文件中包含如下代码,此时可以注释或删除

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

方法二

在项目同名文件夹下的__init__.py文件中添加如下代码:

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

要注意是三行代码,网上好多教程中没有包含第二行代码,导致虽然使用pymysql代替了MySQLdb,但版本不匹配,仍然会出现上述错误。

方法三

默认设置下在pycharm中创建Django项目时,会出现此问题。这是由django的默认版本2.2.6引起的,因此只需将django版本降级到2.1.7,然后终端中的错误就消失了,具体方法如下:

pip install Django==2.1.7
  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
这个错误是因为你的Django项目需要使用mysqlclient库的1.4.3或更新版本,但是你当前安装的mysqlclient库版本是1.0.3,所以导致了错误。你可以通过以下步骤解决这个问题: 1. 确认你已经安装了MySQL客户端和开发文件。 在Ubuntu系统中,可以通过以下命令安装: ``` sudo apt-get install mysql-client sudo apt-get install libmysqlclient-dev ``` 2. 使用pip升级mysqlclient库。 ``` pip install --upgrade mysqlclient ``` 如果你不想使用pip升级,也可以手动下载源码进行安装: ``` wget https://github.com/PyMySQL/mysqlclient-python/archive/1.4.3.tar.gz tar xzf 1.4.3.tar.gz cd mysqlclient-python-1.4.3 python3 setup.py install ``` 注意:这里的版本号是1.4.3,如果需要更高版本的mysqlclient库,需要替换对应的版本号。 3. 在Django的settings.py中添加mysqlclient库。 ``` DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'your_database_name', 'USER': 'your_database_user', 'PASSWORD': 'your_database_password', 'HOST': 'localhost', 'PORT': '3306', 'OPTIONS': { 'charset': 'utf8mb4', 'use_unicode': True, 'init_command': "SET sql_mode='STRICT_TRANS_TABLES'", 'read_default_file': '/etc/mysql/my.cnf', # 如果需要读取MySQL客户端配置文件 }, 'ATOMIC_REQUESTS': True, # 如果需要开启事务 } } ``` 注意:这里的ENGINE必须是django.db.backends.mysql,否则会导致连接数据库失败。 希望这些步骤可以帮助你解决问题。

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

energy_百分百

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

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值