【mysql数据库】脏数据处理:ERROR StdoutPluginCollector - 脏数据: {“exception“:“Incorrect string value: ‘\\xF0\

00.序言

发现mysql库里面的表和maxcompute里面的表条数不一样,找了半天发现是导入数据的时候有脏数据,被忽略了..

01.问题

从问题日志里发现:
ERROR StdoutPluginCollector - 脏数据: 
{"exception":"Incorrect string value: '\\xF0\\x9F\\x92\\x94' for column 'conntent' at row 1"

【mysql数据库】脏数据处理:ERROR StdoutPluginCollector - 脏数据: {“exception“:“Incorrect string value: ‘\\xF0\

 02.解决方案

因为内容里面有emoji表情包,所以普通的utf-8进不去。

utf-8 是变化长度的编码,储存需要1~4个字节
然而,mysql的utf8只存储最多3个字节。所以有些字符存不进去,像emoji表情等。
为了兼容4字节,MySQL在5.5.3之后增加了这个utf8mb4的编码。
建库,建表时,强烈建议编码使用utf8mb4。

在设计数据库表的字符集时,注意一下,不仅表要设置,有时候语句里面也有特定设置,注意优先级,不然会被覆盖掉。


ALTER TABLE `ads_vos_social_data` 
    MODIFY COLUMN `content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL AFTER `title`;

【mysql数据库】脏数据处理:ERROR StdoutPluginCollector - 脏数据: {“exception“:“Incorrect string value: ‘\\xF0\

 优先级:

如果全都显示设置了,那么优先级顺序是 SQL语句 > 列级别设置 > 表级别设置 > 库级别设置 > 服务器别设置

上一篇:html页面datetime转换格式发生异常解决 Caused by: org.attoparser.ParseException: Exception evaluating SpringEL ex


下一篇:程序员你是如何解决软件系统的易排错性?