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
- 最后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'},
}
}