mysql存储emoji异常解决

Updated on with 0 views and 0 comments

在项目中遇到了存储emoji(😀)报错的情况,错误如下:

Incorrect string value: '\xF0\x9F\x98\x80' for column 'name' at row 1

我们的项目使用的是springboot2.4.8+mysql5.7

数据库字段的编码已经修改成utf8mb4,并且直接把emoji插入表是可以成功的,所以不是数据库编码的问题。

网上搜了一下资料,有两个解决方案:

  1. 设置连接池的connection-init-sql的值为:SET NAMES utf8mb4,这个会在每次执行sql前执行;
  2. 升级mysql驱动类版本。升级前我们使用的是5.1.46,升级到5.1.49后问题解决。

为什么升级驱动类后可以了呢,我查看了mysql官网对驱动类的发行说明,发现5.1.47版本就已经解决了这个问题,原文如下:

image.png

浏览器翻译后:

image.png

参考链接:Changes in MySQL Connector/J 5.1.47 (2018-08-17)


标题:mysql存储emoji异常解决
作者:fyzzz
地址:https://fyzzz.cn/articles/2021/08/03/1627976537206.html