大家好呀,我是summo,这次的文章标题是一个Mysql数据库的SQL错误,遇到的同学自然懂,没遇到的同学希望你永远也不要遇到。
一、错误说明
Cause: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x90\xA6' for column 'name' at row 1
这个错误通常是由于数据库列的字符集设置不支持某些特殊字符(例如表情符号)
,导致在插入或更新数据时失败。根源就是MySQL使用的是utf8编码,utf8编码默认每个字符3个字节,而Emoji表情使用的Unicode编码占4个字节,所以写入数据库的时候会写入失败并报错。
二、错误分析
1. 分析表的字符集
有设计表结构经验的同学应该都知道MySQL的存储引擎,如InnoDB和MyISAM,但表的字符集不知道大家清不清楚。简单来说表的字符集(Character Set)决定了表中可以存储的字符类型及其编码方式。最适合存储表情符号的字符集是utf8mb4
,所以遇到这个错误时首先检查一下错误表的字符集。
###(1)查看 MySQL 的系统变量,以确认 MySQL 实例的默认字符集
SHOW VARIABLES LIKE 'character_set%';