错误:
1 | Caused by: java.sql.SQLException: Incorrect string value: '\xF6\x9D\x98\x84' for column 'column' at row 1 |
原因:
mysql 编码为 utf-8造成, utf-8只能存储1-3个字节,而emoji表情是4个字节
1 | #查看当前mysql的编码 |
解决:
utf8mb4是utf8的新版,兼容utf8
1 | [client] |
这是修改后的正确 mysql 配置
坑:
其实在搞得时候由于mysql集群的复杂性,重启风险很大,尝试过修改表和列的编码方式,但是基本没效果。修改列和表的utf8mb4后,手动insert 语句是可以插入的,rest_api也可以正常返回。
只要过Spring Boot程序进行保存就会报错
1 | // 这两种方式都无效 |
似乎是由于在启动的时候会查找mysql默认的编码方式,再返回到程序,通过程序来进行check是否满足插入条件。
只能修改mysql级别的characterEncoding才可以正常保存