今天再插入一条数据的时候,忽然报错。
Cause: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x90\xB0\xE5\xA4...' for column 'username' at row 1; uncategorized SQLException for SQL []; SQL state [HY000]; error code [1366]; Incorrect string value: '\xF0\x9F\x90\xB0\xE5\xA4...' for column 'username' at row 1;
经过排查发现是由于username的值是带有emoji表情的,像这样:??夏大大??。
起因是mysql的字符集设置有误。尽管是utf-8,但并不是真正的utf-8,他最多支持3个字节。而utf8mb4才是支持4个字节的编码方式。
处理方案就是讲相应的字段编码改成utf8mb4,为了避免空间白费,只改动需要存储emoji的字段就可
1、修改mysql配置文件/etc/my.cnf 。修改为。character-set-server = utf8mb4
2、使用命令行或者者可视化工具修改字段编码方式
修改配置文件需要重启生效。至此数据库便支持emoji。