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