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;