当我们启动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