text类型字段报错Data truncation: Data too long

【 TiDB 使用环境】生产环境
【 TiDB 版本】8.1.0

【遇到的问题:问题现象及影响】
表字段设置成TEXT类型,添加数据的时候这个字段报错:Data truncation: Data too long
这个字段的字符串长度是:62852
【附件:截图/日志/监控】


打印长度的方法。按道理来说不应该报错

https://docs.pingcap.com/zh/tidb/stable/data-type-string#text-类型

文本串。最大列长为 65,535 字节。可选的 M 参数以字符为单位,用于自动选择 TEXT 列的最合适类型。例如 TEXT(60) 会产生一个 TINYTEXT 数据类型,最多可容纳 255 字节,即容纳一个 60 字符的 UTF-8 字符串,每个字符最多包含 4 字节(即 4×60=240)。不推荐使用 M 参数。

这个文档上解释了,列长的单位是65535字节。然而一个字符,如果是utf8_mb4这个默认的字符集,一个字符是4个字节。

所以你这个字符串有62852个字符,但是字节数可能根据你设置的字符集已经超过了。

你是对的,我以为text了就是6m大小

1 个赞

此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。