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

Django配置MySQL如何设置utf8mb4字符集解决charset参数报错

Django MySQL配置utf8mb4字符集报错解决

报错原因

该报错的核心原因是Django的MySQL后端不会将配置顶层的自定义参数透传给底层数据库驱动,所有驱动接收的连接参数必须放在OPTIONS字段下传递,直接在顶层写charset不会被识别。
另外你贴出的初始配置存在语法错误:'HOST'strong text: 'localhost'混入了多余的格式字符,会直接导致配置解析失败,需要先修正为'HOST': 'localhost'。

正确配置方法

将字符集参数写入OPTIONS字典即可,完整可用配置如下:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': '{{projectName}}',
        'USER': 'root',
        'PASSWORD': 'root',
        'HOST': 'localhost',
        'PORT': '3306',
        'OPTIONS': {
            'charset': 'utf8mb4',
            # 可选:初始化连接时设置SQL模式与排序规则,兼容emoji、特殊生僻字存储
            'init_command': "SET sql_mode='STRICT_TRANS_TABLES', collation_connection='utf8mb4_unicode_ci'"
        }
    }
}

配套调整项

仅修改Django配置无法完全生效,还需要同步调整数据库侧的字符集配置:

  • 执行SQL修改数据库默认字符集:
ALTER DATABASE `{{projectName}}` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  • 对已经创建的数据表,批量或单表执行字符集转换:
ALTER TABLE `你的目标表名` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  • 确认使用的MySQL驱动版本满足要求:mysqlclient 1.3.7+、PyMySQL 0.7+均原生支持utf8mb4字符集,版本过低请先升级驱动。
  • Django 4.0及以上版本可省略init_command中的排序规则配置,框架会根据指定的charset自动匹配对应排序规则。

内容的提问来源于stack exchange,提问作者Baba Fakruddin Shaik

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 04:03:36