项目场景:
最近接到一个数据同步的任务,需要基于 DataInLong 将数据从 MySQL 同步至 Doris 中。
问题描述
数据迁移过程中,一部分表数据出现丢失的情况。
原因分析:
经排查发现,有报错源数据中的 varchar 类型字段太长,导致Doris 表数据插入失败。而本人在创建 Doris 表时,字段长度均是直接沿用 MySQL 源数据表中定义的字段长度。
于是从 Doris 官网上找到了其 varchar 类型的描述:
VARCHAR(M)
变长字符串,M代表的是变长字符串的字节长度。M的范围是1-65533。
注意:变长字符串是以UTF-8编码存储的,因此通常英文字符占1个字节,中文字符占3个字节。
而在 MySQL 中 varchar(n) 中括号中 n 代表字符的个数,并不代表字节个数。
解决方案:
直接将现有 Doris 表中 varchar 类型字段长度调整为原来的 3 倍。(即能兼容全是中文字符的情况)
在进行数据从MySQL到Doris的同步过程中,由于Doris的varchar字段以UTF-8存储,对英文字符占1字节,中文字符占3字节的特性不熟悉,导致了数据丢失。问题源于源数据varchar字段过长,超过了Doris表的字段长度限制。解决方案是将Doris表的varchar字段长度调整为原字段长度的3倍,以适应包含全中文字符的情况。
1781

被折叠的 条评论
为什么被折叠?



