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

【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"

 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`;

 优先级:

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

标签:Incorrect,编码,exception,优先级,string,utf8mb4,设置,mysql,字节
来源: https://blog.csdn.net/weixin_34200157/article/details/121808200