【问题标题】:got an error while connecting MySQL to Django as backend database将 MySQL 作为后端数据库连接到 Django 时出错
【发布时间】:2021-11-03 04:36:11
【问题描述】:

为了将 MySQL 连接为 Django 的后端语言,我在 settings.py 中进行了一些更改,并在下面给出了更改后的代码

    # Database
    # https://docs.djangoproject.com/en/3.2/ref/settings/#databases
    
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'django',
            'PASSWORD':'2684',
            'HOST':'127.0.0.1',
            'PORT':'3306',
            'USER':'root'
        }
    }

保存后执行命令

python manage.py makemigrations

我提到了一个错误

E:\Python\sample_django\root>python manage.py makemigrations
C:\Users\2684j\AppData\Local\Programs\Python\Python39\lib\site-packages\django\core\management\commands\makemigrations.py:105: RuntimeWarning: Got an error checking a consistent migration history performed for database connection 'default': (1193, "Unknown system variable 'default_storage_engine'")
  warnings.warn(
No changes detected

下面给出我的数据库详细信息

数据库名称:django

MySQL 密码:2684

端口:3306

主机:本地主机

用户:root

【问题讨论】:

    标签: python mysql python-3.x django backend


    【解决方案1】:

    python manage.py makemigrations 仅将您的模型更改打包到单独的迁移文件中。由于您没有对模型进行任何进一步更改,因此它显示“未检测到更改”。

    因此,在您运行 makemigrations 之后,您需要运行 python manage.py migrate 以将这些应用到您的数据库。

    Source

    【讨论】:

      【解决方案2】:

      你能检查一下你的 MySQL 版本吗?

      包含“default_storage_engine”的变量名称从 5.5 版更改为 5.7 版

      在 5.5 之前,只有“storage_engine”。从 5.5 开始,可以同时使用“storage_engine”和“default_storage_engine”,现在 5.7 以上只接受“default_storage_engine”。

      【讨论】:

        【解决方案3】:

        RunTimeError 的可能原因是 MySQL 版本。如果您的 MySQL 版本低于 5.5,则变量名应为 storage_engine,如果高于 5.7,则应为 default_storage_engine
        您能否告诉我们您使用的 MySQL 版本?
        您也可以尝试在 settings.py DATABASES 字段中添加以下OPTIONS 结构:

        # Database
        # https://docs.djangoproject.com/en/3.2/ref/settings/#databases
        
        DATABASES = {
            'default': {
                'ENGINE': 'django.db.backends.mysql',
                'NAME': 'django',
                'PASSWORD':'2684',
                'HOST':'127.0.0.1',
                'PORT':'3306',
                'USER':'root',
                'OPTIONS': {
                    "init_command": "SET default_storage_engine=<DB name>",
                },
            }
        }
        

        如果 MySQL 版本storage_engine,如果 MySQL 版本>5.7,变量应该是 default_storage_engine

        【讨论】:

          【解决方案4】:

          先使用

          Python manage.py makemigrations

          然后

          Python manage.py 迁移

          你所有的问题都会消失。

          【讨论】:

            猜你喜欢
            • 2017-12-08
            • 1970-01-01
            • 2011-10-10
            • 1970-01-01
            • 2020-08-03
            • 2019-06-06
            • 2019-06-12
            • 1970-01-01
            • 2011-03-29
            相关资源
            最近更新 更多