项目场景:
最近接到一个数据同步的任务,需要基于 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 倍。(即能兼容全是中文字符的情况)