Django - 安装mysqlclient错误:要求mysqlclient 1.3.13或更新版本;您的版本为0.9.3。

11 浏览
0 Comments

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连接起来。我已经按照文档进行操作,但在这一点上卡住了。

0
0 Comments

在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兼容。

0
0 Comments

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

如果您使用传统环境,您的路径应该是:

/Lib/site-packages/django/db/base.py

打开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文件中没有找到查询行。

该软件包可能已经更新,所以您找不到该行。无论如何,这个答案只是一个解决方法,直到有更好的解决方法。

0
0 Comments

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)

0