tidb报错 [stats] error occurred when read table stats

tidb 5.0.3

tidb.log报错
[ERROR] [handle.go:275] ["[stats] error occurred when read table stats"] [table=table_name] [error="[types:1406]Data Too Long, field len 10, data len 16"]

–表结构
CREATE TABLE table_name (
id bigint(20) NOT NULL AUTO_INCREMENT,
fk_id bigint(20) NOT NULL,
create_time datetime NOT NULL ,
version int(5) NOT NULL DEFAULT ‘0’,
modify_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
save_money decimal(12,3) NOT NULL ,
fk_member_id bigint(20) NOT NULL,
state varchar(10) COLLATE utf8mb4_general_ci DEFAULT ‘Finished’ ,
save_type int(11) DEFAULT ‘1’ ,
ext varchar(500) COLLATE utf8mb4_general_ci DEFAULT NULL ,
PRIMARY KEY (id) /*T![clustered_index] CLUSTERED */,
KEY idx_id (fk_id),
UNIQUE KEY idx_id_type (fk_id,save_type)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci AUTO_INCREMENT=30021

Data Too Long

数据长度超过字段设置的长度了。

从报错的 field len 10 来看,应该是 state 字段超长了。

error occurred when read table stats
我看字面意思是“读取表统计信息时发生错误”
是统计信息?

可能超出字段长度也是一种关于表信息的错误:smiley:

具体信息还是要看后面的 error 输出, [error="[types:1406]Data Too Long, field len 10, data len 16"]

最近一直报这个错,程序和数据库也检查了,没有涉及超出范围的字段值,前端没报错,这个tidb是通过DM从mysql实时同步过来作为slave使用,还有哪些方面是我可能忽视的?

开了 new collation 才会触发的,看看是否此问题,多谢。
issue: https://github.com/pingcap/tidb/issues/27024

new_collations_enabled_on_first_bootstrap: true
设置过此参数,有影响?为什么?

就是上面的issue 链接,bug 导致的这个问题。

这个BUG会对生产业务有影响吗?大概什么时候修复呢?

可能的影响:

  1. 这张表上的统计信息可能没法加载上来,导致没法使用统计信息做行数估算,选不中正确的计划
  2. 导出统计信息失败,这个之前已经在 dbaas 上遇到过了

tidb.log 出现报错的原因:
是从 tikv 加载统计信息的时候触发的 因为这个时候有一个类型转换的过程,这个过程有长度检查,这里报错了

修复的话,麻烦关注下上面答复的 issue,或者查看之后的版本说明,多谢。

好的 多谢

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