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

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

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

你可能感兴趣的:(django.db.utils.OperationalError: (1366, "Incorrect string value: '\\xF0\\x9F\\x98\\x81