问题:
今天再插入一条数据的时候,突然报错。
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。