美文网首页
Springboot+mysql程序插入emoji表情错误

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

作者: 通通小小通 | 来源:发表于2019-08-09 07:32 被阅读0次

最近在用富文本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

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

相关文章

网友评论

      本文标题:Springboot+mysql程序插入emoji表情错误

      本文链接:https://www.haomeiwen.com/subject/vroqjctx.html