背景环境

java8,centos7.9,mysql8.0.34 新装的环境,默认给装了mysql8,想着与时俱进用下新版,结果插入就报错java.sql.SQLException: Incorrect string value: '\xF0\x9F\x87\xA8\xF0\x9F...' for column

解决方法

这个错误通常是由于MySQL数据库中的字符集不支持存储特定的字符或表情符号引起的。MySQL默认的字符集是utf8,它只能存储Unicode字符集的子集,无法存储一些特殊的字符。

解决这个问题的一种方法是修改MySQL的字符集为utf8mb4,它支持存储全部的Unicode字符集,包括表情符号等特殊字符。下面是修改MySQL字符集的步骤:

  1. 查看my.cnf
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci

改为

[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
  1. 重启mysql
systemctl restart mysqld

3.修改已有的数据库字符集

ALTER DATABASE your_database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;

4.修改有错误的表,手工修改

ALTER TABLE your_table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;