django项目保存emoji字符报错问题解决

2025-09-25 15:54:11 by wst

django

今天写一个一篇博客,但是里面包含了特殊字符,报错的时候报错了:
 

The above exception ((1366, "Incorrect string value: '\\xF0\\x9F\\x93\\x9A&l...' for column 'content' at row 1")) was the direct cause of the following exception:

最后的解决方法是:

1. 修改django的配置settings.py的DATABASE:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'XXXX',
        'USER': 'XXX_admin',
        'PASSWORD': 'XXX_1234',
        'HOST': '*.*.*.*',
        'PORT': '3306',
        # 添加以下参数以支持utf8mb4
        'OPTIONS': {
            'charset': 'utf8mb4',
            'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
        },
    }
}

2. 修改数据库参数:

登录 MySQL 服务器,执行以下 SQL 命令:

-- 1. 修改数据库编码
ALTER DATABASE XXXX CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- 2. 修改已有表的编码(假设表名为`your_table`,替换为实际表名)
ALTER TABLE your_table CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- 如果有多个表,需要逐个修改,或执行以下SQL生成批量修改语句
SELECT CONCAT(
    'ALTER TABLE ', table_name, ' CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;'
) FROM information_schema.tables 
WHERE table_schema = 'wst_blog';

修改了配置后,重启服务,搞定!


Comments(0) Add Your Comment

Not Comment!