Springboot+mysql程序插入emoji表情错误

最近在用富文本emoji表情的存入数据库的时候一直遇到一个错误

error code [1366]; Incorrect string value: '\xF0\x9F\x98\x84<b...' for column 'productDescription' at row 1; nested exception is java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x84<b...' for column 'productDescription' at row 1] with root cause
  • 原因分析

数据库设置的字符格式(utf8)不支持emoji表情字符.只需要将数据的字符格式都设置为utfmb84即可.
Emoji表情是4个字节,而mysql的utf8编码最多3个字节,所以数据插不进去,而utf8mb4是支持四个字节的.所以解决方案就是:将mysql编码从utf8转换成utf8mb4.

  • 解决方法

既然utf8不支持4个字节的存入,那直接把数据库修改成utf8mb4

  1. 先修改数据库
    我这边是直接修改的某张表的编码,不需要全部修改,可按需修改
# 修改数据库字符集:
ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;

# 修改表的字符集:
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

2.修改Springboot配置文件

spring:
  datasource:
    hikari:
      connection-init-sql: SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci

在插入表情的时候就不会报错了

推荐阅读更多精彩内容

  • https://my.oschina.net/wingyiu/blog/153357 MYSQL 5.5 之前, ...
    爱蛇阅读 1,911评论 0 0
  • 李康 温州海丰食品配料有限公司2019年4月15日 327期学员 448期志工 472期志工 【日精进打卡第206...
    安徒生_4c5c阅读 31评论 0 0
  • 近日在青岛市即墨市古城街道有一家名字叫做金山鸭卷的美食店铺,经记者采访附近民众了解道,该店铺是青岛市一家老字号的店...
    刘志翔阅读 117评论 2 4
  • ​1 我的第一个愿望 窗边摇曳的风带动窗帘左右摇摆,浅色的花纹轻轻拍打在玻璃上,阳光从窗帘的间隙里偷偷伸出臂膀,想...
    xxxbiongbiong阅读 132评论 0 0