mysql插入数据出现java.sql.SQLException Create breakpoint : Incorrect string value: '\xF0\x9F\xA4\xA3\xF0\x9F...' for column 'content'

问题图片如下:
 

 
如果出现这个问题,就是当前的mysql设置的字符集和当前业务的需求符合;
前:
当前我需要在mysql中存入的内容中包括了表情等信息,如下:

问题分析:
因为我在docker中搭建的mysql设置的默认编码为utf-8,下面是我的my.cnf文件

[client]
default_character_set=utf8

[mysql]
default-character-set=utf8

[mysqld]
collation_server = utf8_general_ci
character_set_server = utf8
skip-character-set-client-handshake
skip-name-resolve

 
通过查找资料,如果出现这个问题(在mysql中存入Emoji 表情),就是表示存入的数据不能通过utf-8进行编码,需要将其mysql的编码设置为utf8mb4(这个编码是兼容utf-8的,所以之前存的数据也不会出现乱码)
解决方式:
就将my.cnf文件中的配置进行修改即可,修改如下:

[client] 
default-character-set = utf8mb4 
[mysql] 
default-character-set = utf8mb4 
[mysqld] 
character-set-client-handshake = FALSE 
character-set-server = utf8mb4 
collation-server = utf8mb4_unicode_ci 
init_connect='SET NAMES utf8mb4'

再将当前表的编码进行设置为utf8mb4就好了
alter table 需要修改的表名 convert to character set utf8mb4 collate utf8mb4_bin;

posted @ 2024-02-08 19:06  just1t  阅读(69)  评论(0编辑  收藏  举报