【问题标题】:Getting error while using MySQL as database in django在 django 中使用 MySQL 作为数据库时出错
【发布时间】:2020-10-13 19:01:34
【问题描述】:

我正在使用Django 3.1.0,当我将MySQL 设置为生产服务器上的数据库时出现以下错误。

#ERROR
Getting django.core.exceptions.ImproperlyConfigured: mysqlclient 1.4.0 or newer is required; you have 0.10.1. error while using MySQL in Django

我的服务器是apache server 并使用Cpanel,它是python 服务器,而不是vps

我已尝试安装mysqlclientPyMySQL 并将以下代码添加到__init__.py 文件中。

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

我的数据库配置是 Django

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql', 
        'NAME': 'sadraedu_mydb',
        'USER': 'sadraedu_mydbu',
        'PASSWORD': '*******',
        'HOST': 'localhost', 
        'PORT': '3306',
    }
}

任何帮助将不胜感激。

【问题讨论】:

  • 错误信息确实告诉你问题是什么,你需要安装一个更新的python库。
  • 我已经这样做了,但它没有再次起作用

标签: python django mysql-connector-python


【解决方案1】:

出现此错误是因为您使用 PyMySQL 作为 mysqlclient 的替代品(它是一个或另一个,您不需要两者)

Django 正式支持 mysqlclient,但不支持 PyMySQL(撰写本文时,2020 年 12 月,Django 3.1)

Django 会检查你正在使用的 mysqlclient 的版本。

如果您使用 PyMySQL 作为替代品,它使用完全不同的编号系统。

这就是导致此错误的原因。

"需要 mysqlclient 1.4.0 或更高版本;您有 0.10.1。"

在这个例子中,它告诉你它需要 mysqlclient 1.4.0。但是你使用的是 pymysql 0.10.1。

如果你无论如何都想使用pymysql,你需要伪造版本号来绕过这个错误。

例如,当您将 pymysql 设置为直接替换时:

import pymysql
# because Django has a hard-coded check for mysqlclient version
# but we're using pymysql instead
pymysql.version_info = (1, 4, 0, "final", 0)
pymysql.install_as_MySQLdb()

【讨论】:

    【解决方案2】:

    我在将 Django 本地应用部署到 Google Cloud 时遇到了同样的问题。

    改用 Django 3.0 为我解决了这个问题:

    pip install Django==3.0
    

    由于某种原因,它无法识别 settings.py 中的 LANGUAGE_CODE 的 en-uk,所以我不得不更改它,但这是唯一的事情。

    【讨论】:

      猜你喜欢
      • 2021-11-03
      • 2021-09-20
      • 2018-08-27
      • 1970-01-01
      • 1970-01-01
      • 2021-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多