tidb日志报字段长度不够错误

【TiDB 版本】v4.0.9

【问题描述】
tidb的日志里面出现很多字段长度不够的错误。


出现这些错误上下文并没有执行的sql。很奇怪。

应该是业务写入超过字段预设的大小的报错,可以从业务log 或者 业务同学确认一下。看看需不需要做一下 DDL变更。

这个错报的,不知道哪个库,也不知道i哪个字段,也不知道啥sql。就一个表。我们库都有这个表,要改,还要每个库都要改。业务测没有,如果有这样的,也就会插入数据报错了。而且这个错误会一直在刷

1、这个报错信息确实不友好,如果可以显示报错的 table name 和 column name 会更有利于定位问题~~

2、针对这个报错,可以尝试将 general log 打开,看能否打印出相关的 sql,general log 开启方式参考:

https://docs.pingcap.com/zh/tidb/stable/system-variables#tidb_general_log

好的,感谢

:ok_hand:

这个字段长度报错又来了。现在开启了general log,但是也没有相关的sql。

,可以看出再这个报错的时候,io明显高了。,看到报错日志的上下有在analyze table ims_a08_51.`ims_task_user。我找到对应的库当中,查看,将字段15的长度改长了。就不报错了。可以看到io瞬间降下来了。 日志也不报错了。但是问了业务那边,没有改动任务东西。但是这个错误真的很疑惑?io高的原因是,一直在analyze这张表。

辛苦手动 analyze table 这个表看看能否重现这个问题。

不会的。试过了

麻烦提供一下以下信息:

  1. curl http://{tidb_ip}:{tidb_status_port}/stats/dump/{db}/{table}
  2. select @@tidb_config

21.sql (17.8 KB)

  1. curl http://{tidb_ip}:{tidb_status_port}/stats/dump/{db}/{table} 这个结果没有给到。看上传的文档应该是请求了 4000 的服务端口,需要是请求 status_port (默认 10080)

[root@ims-tidb-monitor ~]# curl http://172.16.0.57:10080/stats/dump/ims_a08_51/ims_task_user
[types:1406]Data Too Long, field len 15, data len 18[root@ims-tidb-monitor ~]# 直接报长度不够

请问是线上环境吗?可以先选择非业务高峰期,先删除了这个表的统计信息,再重新收集统计信息 。
再尝试执行 curl http://{tidb_ip}:{tidb_status_port}/stats/dump/{db}/{table} 看看有没有报错。

是线上环境。暂时不敢动。等后面再说吧

好的,有新进展了可以再反馈下