analyze bug

Bug 反馈
清晰准确地描述您发现的问题,提供任何可能复现问题的步骤有助于研发同学及时处理问题
【 TiDB 版本】
4.0.13
【 Bug 的影响】
analyze后健康度没有变化

现象:
日志报错:
两张表的报错
[error=“[types:1406]Data Too Long, field len 40, data len 64”]
[error=“[types:1406]Data Too Long, field len 10, data len 16”]

触发方式:
调用analyze一次触发一次,analyze的表的字段长度有40,10

影响:
调用analyze后客户端能够正常执行,且客户端没有返回任何warning信息,但是日志中记载如上warning信息,而且analyze后健康度没有任何变化

尝试过的方法:
DROP STATS TableName;没有作用

类似的issue:
https://github.com/pingcap/tidb/issues/27024

社区类似的问题:

ps:
不是upper_bound,跟那个不是一个报错

解决了

操作步骤:
1.把自动analyze调成一个非当前时间点,保证当前不会自动analye
set global tidb_auto_analyze_start_time=‘00:00 +0000’

2.删除该表的统计信息
DROP STATS db_name.table_name

3.手动analyze 表
analyze table db_name.table_name
(此时问题解决了,查看健康度恢复到100了)

4.恢复自动analyze
set global tidb_auto_analyze_start_time=

原因:可能是统计信息不准导致的,而这不准的原因导致自动analyze一直不成功,所以需要如上操作

但根本问题还得等研发大佬看了

另外还有一个现象,我观察了好几张报警的表,现象都是一致的
Data Too Long, field len 255, data len 284
比如这个报错,是表中有一个字段的定义长度是255,这个字段的最大长度是142,所有的这种data len的报警都是字段最长长度*2

1 个赞

:call_me_hand:优秀的DBA都是自我解决!

我刚看完问题,发现你自己解决了

就是不清楚原因,读代码的能力还是菜啊

主要是原因不太清楚

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