- 问题
- 原因
- 出现场景
- 解决方式
问题
java报错堆栈
java.sql.SQLException: Incorrect string value: '\xF0\x9F\x90\x82' for column 'spda_content' at row 1
原因(不严谨)
utf8以4个字节存储汉字,而一些特殊符号的字节长度可能超过四个
出现场景
对于编码是utf8的字段,传入了含特殊符号的数据
解决方式
- 修改数据库类型
mysql> alter database xxx CHARACTER SET utf8mb4;
-
修改参数设置
-
修改字段编码
- 重启数据库(数据库大的话,很耗时,生产环境谨慎使用)
- 确认下
重启完成后,对应数据库的字符集由utf8变为utf8mb4即可