django.db.utils.OperationalError: (1366, "Incorrect string value: '\\xF0\\x9F\\x98\\x81</...' for...

django.db.utils.OperationalError: (1366, "Incorrect string value: '\\xF0\\x9F\\x98\\x81</...' for column 'content' at row 1")

xadmin添加记录时,因问半包含emoji表情,报错。
原因:mysql的UTF-8只支持三个字节的存储,而一般字符是三个字节,但是emoji表情是4个字节,所以存储不了。
解决方法

将包含表情该字段设置为utf8mb4
ALTER TABLE table_name MODIFY colum_name VARCHAR(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

需要设置下表的字符集
ALTER TABLE table_name CHARSET=utf8mb4;

需要设置本数据库为utf8mb4啊
SET NAMES utf8mb4

  1. 最后django数据库修改字符集
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'xxxxxx',
        'USER': 'xxxxx',
        'PASSWORD': 'xxxxx',
        'HOST': '127.0.0.1',
        'PORT': 3306,
        'CONN_MAX_AGE': 180,
        'OPTIONS': {'charset': 'utf8mb4'},
    }
}

参考1
参考2

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容