一、问题由来

今天应用报错:

### Error updating database.  Cause: java.sql.SQLException: Incorrect string value:'\xF0\xA4\x9E\x8F",...' for column 'message_content' at row 1

二、初次分析

我们可以看到xF0xA4x9Ex8F是4字节很可能就是utf8mb4中某些生僻字的编码。我们将表更改为utf8mb4后还是报错。所以第一步一定要将字段或者表修改为utf8mb4如下语句

alter table test101 convert to character set utf8mb4;
or
alter table test101 change `name` `name` varchar(20) CHARSET utf8mb4 DEFAULT NULL ;
注意:这个语句是copy算法会受到MDL LOCK的影响完全堵塞,不是online ddl如下:
mysql> alter table test204 algorithm=inplace, change `name` `name`
varchar(20) CHARSET utf8 DEFAULT NULL ;
ERROR 1846 (0A000): ALGORITHM=INPLACE is not supported. Reason: Cannot change column type INPLACE. Try ALGORITHM=COPY.

三、详细分析

随后当然报错还在继续,然后我简单描述一下我的分析的过程。具体知识见如下文章:

关于ORACLE和MYSQL中文字符乱码的根源剖析]
http://blog.itpub.net/7728585/viewspace-2086271/ 

我们当前环境为:

  • 客户端入库字符集 utf8mb4
  • 转换字符集 utf8
  • 存储端字符集utf8mb4

对于这种情况的设置,对已某些生僻字比如:

insert into test204 values('?');

(?)的其utf8mb4编码为:

就需要将四字节的0Xf0a4bd82编码转换为utf8显然是不可能的。因为utf8根本不认识而且还是三个字节所以报错如下:

[SQL]
insert into test204 values('?');
[Err] 1366 - Incorrect string value: '\xF0\xA4\xBD\x82' for column 'name' at row 1

为此实际上我们只需要做一个操作就是不做转换及

set names utf8mb4;

这样环境如下:

  • 客户端入库字符集 utf8mb4
  • 转换字符集 utf8mb4
  • 存储端字符集utf8mb4
insert into test204 values('?');
[SQL]
insert into test204 values('?');
受影响的行: 1
时间: 0.218s

插入成功。我们读取数据文件二进制进行底层验证取到的数据如下:

红色部分为('?')这个字的十六进制编码。没有问题数据入库完成。

作者微信:

MySQL: Incorrect string value: '\xF0\xA4\xBD\x82'分析解决相关推荐

  1. 【Mysql】存储emoji表情报错(Incorrect string value: ‘\xF0\x9F\x98\x82\xF0\x9F...‘)的解决方案

    [Mysql]存储emoji表情报错(Incorrect string value: '\xF0\x9F\x98\x82\xF0\x9F...')的解决方案 参考文章: (1)[Mysql]存储emo ...

  2. mysql导数据出现Incorrect string value: '\xF0\x9F\x90\x82'报错

    问题描述:利用mysql的load data  infile into 命令导数据,导到198780行就自动回滚rollback,返回 Incorrect string value: '\xF0\x9 ...

  3. 解决 java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x82\xF0\x9F...'

    java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x82\xF0\x9F-' 问题: 因为表情符号存入Mysql数据库字符串不兼 ...

  4. 【MySQL】存储emoji表情报错(Incorrect string value: '\xF0\x9F\x98\x82\xF0\x9F...')的解决方案...

    Emoji表情字符现在在APP已经广泛支持了.但是MySQL的UTF8编码对Emoji字符的支持却不是那么好.所以我们经常会遇到这样的异常: Java.sql.SQLException: Incorr ...

  5. mysql xf0x9fx8ex88_【MySQL】存储emoji表情报错(Incorrect string value: '\xF0\x9F\x98\x82\xF0\x9F...')的解决方案...

    Emoji表情字符现在在APP已经广泛支持了.但是MySQL的UTF8编码对Emoji字符的支持却不是那么好.所以我们经常会遇到这样的异常: Java.sql.SQLException: Incorr ...

  6. Incorrect string value: '\xF0\x9F\x98\x82' for column '' at row 1

    1.一般来说Mysql(小于5.5.3)字符集设置为utf8,指定连接的字符集也为utf8,django中save unicode string是木有问题的.但是,当字符串中有特殊字符(如emoji表 ...

  7. MySQL : Incorrect string value: '\xE5\x9B\xBD\xE5\xBA\x86' for column 'stu_name' at row 1

    Reffered:http://info.michael-simons.eu/2013/01/21/java-mysql-and-multi-byte-utf-8-support/ 修改表的编码为ut ...

  8. mysql存储移动端emoji表情 报错Incorrect string value: '\xF0\x9F\x98\x82'

    原因:mysql utf8存储2-3个字节 移动端的emoji表情为4个字节 方法: 1.修改my.cnf 文件 加入 [client] default-character-set = utf8mb4 ...

  9. (MySQL)Incorrect string value: '\xF0\x9F\x98\x82\xF0\x9F...' for column 'readerName' at row 1

    在向数据库存入表情的时候,出现这样的错误,网上搜了一下,各种命令,改配置,后来对比一下,发现这么改也是一样的.送上解决办法,但是不保证全部适用.出现这样的问题是因为,普通的字符串或者表情都是占位3个字 ...

最新文章

  1. 马云自嘲只会用电脑收发邮件,网友:马老师的话,听听就行了
  2. 祈澈菇凉的高端知识资源分享星球开通
  3. CentOS7 扩容 / 目录
  4. profile 文件含义
  5. shell脚本获取客户端IP
  6. asp.net中此页的状态信息无效,可能已损坏的解决之道
  7. 牛客小白月赛12 I 华华和月月逛公园 (tarjian 求桥)
  8. mysql cluster 查看数据库表名称_MySQL Cluster如何创建磁盘表方法解读
  9. Altium Designer20原理图库放置引脚报错解决方案
  10. 转载 敏捷教练,从A到Z
  11. hdu 2184 01背包变形
  12. 1208. 尽可能使字符串相等
  13. 磁盘分区和目录的区别是什么
  14. hashmap允许null键和值吗_【29期】Java集合框架 10 连问,你有被问过吗?
  15. 苹果id解锁平台_黄蜂2单手手柄体验:苹果安卓平台双通用,解锁新潮玩法!
  16. 阿里菜鸟java后台开发电话面试
  17. 回头再说012 盘点我的2008年
  18. 疫情影响下普惠金融风险与对策
  19. 接口测试[PostMan]
  20. python爬虫豆瓣评论论文_Python爬虫(三)——对豆瓣图书各模块评论数与评分图形化分析...

热门文章

  1. php实现微信一键登录,PHP如何实现微信的授权登录
  2. 【智能优化算法-白鲸算法】基于白鲸优化算法求解多目标优化问题附matlab代码
  3. 【小程序】IDEA实现qq邮件的发送
  4. ubuntu 下创建加密文件夹
  5. Excel 数据的统计分析及绘图自动处理的python示例(精益办公实战2)
  6. Spring 中 MongDB Conver转换器的使用
  7. Centos下rarcrack破解压缩包密码
  8. 《追寻生命的意义》摘抄
  9. 最快的计算机操作,自学电脑操作怎样比较快?
  10. 3.1 机器学习 --- 决策树