【问题描述】

com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect string value: '\xF0\x9F\x8E\x89' for column 'title' at row 1

【问题原因】

数据库中有的表字段,有4个字节而mysql的utf8字符集最大只支持3个字节,因而出错。

【解决方法】

在mysql中有一个utf8字符集的超集utf8mb4,该字符集允许存储的字符最多为4个字节,那么它就可以满足对Emoji表情的存储。所以我们只需要将对应的字符集改为utf8mb4即可。

原有字符集可以通过以下方式查看:

SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';

修改my.cnf配置

character_set_server=utf8mb4

collation-server=utf8mb4_unicode_ci

简单一点,这个时候可以直接将整库删除后重建。

如果库中已经有业务数据,可以通过以下方式修改。

-- 修改整库的字符集

ALTER DATABASE <database_name> CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci

-- 修改表的字符集

ALTER TABLE <table_name> CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- 修改单个字段的字符集

ALTER TABLE <table_name> CHANGE src_column_name <target_column_name> VARCHAR(600) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

最新文章

  1. Visual Studio 2012环境变量、工作目录、vc++目录、 命令等 的配置和作用
  2. UVa 108 - Maximum Sum(最大连续子序列)
  3. JS页面间传值
  4. ASP.NET 常识
  5. BFS+状态压缩 HDU1429
  6. 现代JVM内存管理方法的发展历程,GC的实现及相关设计概述(转)
  7. MySQL命令无法结束
  8. Linux系统中常见文件系统格式
  9. 字符串string的相关应用
  10. 干了这杯Java之transient关键字
  11. Django 缓存
  12. 【angularJs】阻止默认事件
  13. C++之string类型详解
  14. js获取上传图片大小,判断上传图片类型,获取图片真实宽度和高度
  15. 4. Tomcat内存溢出解决
  16. Bridge桥接模式(结构型模式)
  17. 快速选择算法/Select 寻找第k大的数
  18. 解决opencv和mfc同时使用导致memory leak
  19. 剑指offer(31-35)编程题
  20. Thinkpad X201 Gobi2000 上电信3G网络

热门文章

  1. 密码学系列之:明文攻击和Bletchley Park
  2. 7、Spring Cloud Hystrix
  3. 使用Binlog日志恢复误删的MySQL数据
  4. 我用go-zero开发了第一个线上项目
  5. C++ 中使用 PRId64
  6. Flink批处理读写Hive
  7. 华为Mate20 Adb驱动失败
  8. redis源码学习之lua执行原理
  9. 【python爬虫】一个简单的爬取百家号文章的小爬虫
  10. python初学者-计算小于100的最大素数