You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django配置MySQL作为后端执行makemigrations报错该如何解决?

报错原因

  • 该警告由Django与MySQL的版本适配问题导致:你当前使用的MySQL版本(大概率是8.0+高版本或者部分定制MySQL发行版)已经废弃了default_storage_engine系统变量,而你安装的Django 3.2版本仍然会主动查询该变量来校验数据库连接,因此触发运行时警告。
  • 后续输出的No changes detected不属于报错,仅表示当前没有检测到模型层的变更,不需要生成新的迁移文件。

解决方法

按优先级从高到低选择即可:

  1. 升级Django版本
    直接将Django升级到4.0及以上版本,新版本已经修复了对高版本MySQL的变量适配问题,无需修改其他配置,执行命令:

    pip install --upgrade django
    
  2. 修改settings.py数据库配置,显式指定引擎
    如果不方便升级Django版本,直接在DATABASES的default配置项中添加OPTIONS参数,手动指定存储引擎,跳过变量查询逻辑,修改后的配置如下:

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'django',
            'PASSWORD':'2684',
            'HOST':'127.0.0.1',
            'PORT':'3306',
            'USER':'root',
            # 新增以下配置
            'OPTIONS': {
                'init_command': "SET storage_engine=INNODB",
            }
        }
    }
    

    如果修改后仍提示变量不存在,把init_command的值换成"SET default_storage_engine=INNODB"即可。

  3. 更新MySQL连接驱动
    如果你使用pymysql作为连接驱动,替换为官方推荐的mysqlclient,版本选择2.1.0及以上即可:

    pip uninstall pymysql
    pip install mysqlclient>=2.1.0
    

内容的提问来源于stack exchange,提问作者JOHN ARTHUR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 14:39:03