Django - 安装mysqlclient错误:要求mysqlclient 1.3.13或更新版本;您的版本为0.9.3。
Django - 安装mysqlclient错误:要求mysqlclient 1.3.13或更新版本;您的版本为0.9.3。
我已经在论坛上搜索了,但无法找到答案或任何关于这个问题的文档。我试图重新创建一个像www.testandtrack.io这样的网站。\n在运行以下命令时:\n
python manage.py inspectdb
\n我遇到了错误:\n
需要mysqlclient 1.3.13或更新版本;您的版本是0.9.3
\n我尝试了所有建议的修复方法,包括:\n- 升级pip\n- 安装不同的wheel(32位而不是64位),即mysqlclient-1.4.2-cp37-cp37m-win32.whl,命令为pip install mysqlclient-1.4.2-cp37-cp37m-win32.whl(这个命令可以正常运行,但不能完成所需的工作!)\n我的目标只是将一个遗留的MySQL数据库(在XAMPP和myphpadmin中运行)与Django连接起来。我已经按照文档进行操作,但在这一点上卡住了。
在Linux Mint 19.1操作系统上,我遇到了一个问题,由于安装了较低版本的mysqlclient导致出现了如下错误信息:mysqlclient 1.3.13或更高版本是必需的;但你安装的是0.9.3版本。下面是解决该问题的步骤:
1. 首先,卸载mysqlclient:`pip3 uninstall mysqlclient`
2. 然后,卸载pymysql:`pip3 uninstall pymysql`
3. 接下来,重新安装mysqlclient:`pip3 install mysqlclient`
通过按照以上步骤操作,可以解决该问题。这样就能确保安装了正确的mysqlclient版本,以便与Django 2.2.2兼容。
Django - 安装mysqlclient错误:需要mysqlclient 1.3.13或更高版本;您的版本是0.9.3。
这是我修复它的方法。
进入django/db/backends/mysql安装目录。
检查错误消息中的路径。
我使用的是pipenv,所以我的路径是:
/home/username/.local/share/virtualenvs/project-env/lib/python3.7/site-packages/django/db/backends/mysql
如果您使用传统环境,您的路径应该是:
打开base.py文件并搜索:
version = Database.version_info
在if语句中加入一个pass,并注释掉以下代码行:
raise ImproperlyConfigured('mysqlclient 1.3.13 or newer is required;
you have %s.' % Database.version)
修改后的代码如下:
if version < (1, 3, 13): pass ''' raise ImproperlyConfigured( 'mysqlclient 1.3.13 or newer is required; you have %s.' % Database.__version__ ) '''
保存并关闭该文件,然后打开operations.py文件。
搜索以下代码:
query = query.decode(errors='replace')
将decode改为encode:
query = query.encode(errors='replace')
现在尝试运行服务器。
在回答发布之前,我没有找到其他解决方法。现在有更好的解决方法来解决这个问题。这个答案提供了更好的方法。
这个方法有效,但是否还有其他方法呢?也就是说,如何在真实的服务器上解决这个问题,因为我们可能无法访问这些文件?
你找到其他解决方法了吗?
我没有找到其他解决方法。由于这个问题,我转向了nodejs,并且对于我来说,自定义django似乎非常困难。
建议是通过SSH连接到您的服务器,并使用VIM更改文件。
使用Django的真实服务器将可以访问这些文件。我在容器中运行Django,通过将"Database.version_info"替换为"(2,0,0)"来解决了这个问题,以跳过导致错误的if语句。bash脚本如下:
sed -i "s/Database.version_info/(2,0,0)/g" /usr/local/lib/python3.6/site-packages/django/db/backends/mysql/base.py
这对我没用。出于某种原因,它调用了我计算机上不存在的文件。我无法搜索到它,但它仍然被调用并给出了这个错误。
您不应该通过编辑文件来修复,按照以下说明进行操作:stackoverflow.com/a/59591269/521586,这样做更加清晰和健壮,当Django更新时也不会受到影响,或者当有人试图理解您的设置时也是透明的。
在base.py文件中加入pass是有效的,但我在operations.py文件中没有找到查询行。
该软件包可能已经更新,所以您找不到该行。无论如何,这个答案只是一个解决方法,直到有更好的解决方法。
Django - 安装mysqlclient出错:需要mysqlclient 1.3.13或更高版本;您当前的版本是0.9.3
我猜测您的项目使用的是pymysql而不是mysqlclient。
您可以在项目中搜索以下代码片段。如果找到了,请尝试以下方法来解决这个问题:
import pymysql pymysql.install_as_MySQLdb()
在这两行代码之间插入一行代码,使其变成如下形式:
import pymysql pymysql.version_info = (1, 3, 13, "final", 0) pymysql.install_as_MySQLdb()
然后尝试启动您的项目。
- 为什么我知道您在使用pymysql?因为0.9.3只是pymysql的最新版本。
- 为什么在项目中使用pymysql而不是mysqlclient?因为pymysql更容易安装。pymysql不依赖于系统库,而mysqlclient依赖于一系列系统库,如libmysqlclient-dev。
- 为什么mysqlclient很难安装,但Django仍然默认使用它?因为mysqlclient更快且性能更好。所以如果您的项目有高性能要求,我建议您删除上述兼容代码,并在项目中安装mysqlclient。如果在安装mysqlclient时需要帮助,请参考此链接:How to install Python MySQLdb module using pip?,并确保在执行
pip install mysqlclient
之前已安装libssl-dev
。
如果您使用的是CentOS 7,则需要在执行pip install mysqlclient
之前执行yum install mysql-devel
。
截至今天,我发现您需要将版本更新为1.4.2
,如下所示:
pymysql.version_info = (1, 4, 2, "final", 0)