Mysql 插入emoij表情报错

  • 记录微信用户信息的时候,有些用户的昵称使用的是emoij,出现以下错误
    Error updating database. Cause: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x92 \xF0...' for column 'nickname' at row 1
    原因是创建数据库时使用的是utf-8编码,mysql支持的utf-8最大直接三个字节,而emoij表情是四个字节。

utf8mb4

  • mysql在5.5.3b版本后增加了utf8mb4(most byte 4),这个才是真正的utf8,但由于平时大部分常用的汉字只有三个字节,为节省空间考虑可以只采用utf8

将项目修改为utf8mb4

1、修改数据库默认字符集
ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
查看数据库默认字符集命令
show create database database_name;
2、改变原先表的字符集(改变数据库只对之后的新表起作用)
修改表默认的字符集和所有字符列的字符集
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

  • 改完之后就可以插入了,看到有些说需要在配置中修改
#设置支持utf8mb4
spring.datasource.tomcat.initSQL=SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci

但我注释了之后也可以用

你可能感兴趣的:(Mysql 插入emoij表情报错)