【 TiDB 使用环境】生产环境 /测试/ Poc
【 TiDB 版本】
【复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【附件:截图/日志/监控】
“ErrCode”: 50000,
“ErrClass”: “not-set”,
“ErrScope”: “not-set”,
“ErrLevel”: “high”,
“Message”: “restore table xms62
.sys_lgfl
failed: [xms62
.sys_lgfl
] batch write rows reach max retry 3 and still failed: Error 1105: strings: negative Repeat count”,
“RawCause”: “”,
“Workaround”: “”
上下游的表结构一样吗?
上下游表结构一样, 数据同步一半报的错。
先执行 query-status
命令查看任务运行状态以及相关错误输出
还有其它线索不,仅这个看不出来
另外查下这张表的上游是否有增删改的操作,因为你这有negative Repeat count负重复计数的报错
batch write rows reach max retry 3 and still failed: Error 1105: strings: negative Repeat count”,
批量写入行达到了最大重试次数 3 次仍然失败
报错是一样的
这是一张日志表, 上游是存在数据插入的
可以从binlog里面找到出错的sql是什么嘛?
除此以外还有一个排查方向。
疑似的issue 是这个:
https://github.com/pingcap/tidb/issues/47115
不过我按照里面提到的方法在7.5.1下测试没有复现。
select tidb_version();
Release Version: v7.5.1
Edition: Community
Git Commit Hash: 7d16cc79e81bbf573124df3fd9351c26963f3e70
Git Branch: heads/refs/tags/v7.5.1
UTC Build Time: 2024-02-27 14:28:32
GoVersion: go1.21.6
Race Enabled: false
Check Table Before Drop: false
Store: tikv
create table t (a int, b int, k varchar(64), primary key (a, b), key k (k));
insert into t values(0,0,‘1[130个空格]’); --执行成功
insert into t values(0,1,‘abc[130个空格]’); --执行成功
insert into t values(0,2,‘[130个空格]1’); ----执行报错,1406 - Data too long for column ‘k’ at row 1
都没有出现issue中提到的 strings: negative Repeat count
报错。
不确定其他tidb版本下是否正常。
给出测试sql,你可以在你的版本下看看是否会出现一样的报错。
2个方向来排查一下。
应该是触发了bug,strings.Repeat(“helloworld”, -1)
Release Version: v7.5.1
Edition: Community
Git Commit Hash: 7d16cc79e81bbf573124df3fd9351c26963f3e70
Git Branch: heads/refs/tags/v7.5.1
UTC Build Time: 2024-02-27 14:28:32
GoVersion: go1.21.6
Race Enabled: false
Check Table Before Drop: false
Store: tikv
报错和上面是一样的。
count < 0 导致的?
检查 一下表 xms62
.sys_lgfl
的结构是否存在异常
CREATE TABLE xms62
.sys_lgfl
(
sqlid
varchar(36) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT ‘sqlid’,
id
bigint(20) NULL DEFAULT NULL,
hotelid
varchar(7) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT ‘1’,
sign
int(11) NULL DEFAULT NULL COMMENT ‘2’,
tableid
varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT ‘<表名称>.<字段名称> : 描述在systemcode表中,cat='tblcolumn'’,
columnid
varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT ‘columnid’,
pkid
varchar(254) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT ‘主键值 : 当前记录的对应主键值,为主键相关字段组合转成的字符串’,
oldvalue
varchar(254) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT ‘oldvalue’,
newvalue
varchar(254) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT ‘newvalue’,
cby
varchar(10) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT ‘修改人’,
changed
datetime NOT NULL COMMENT ‘最近修改’,
descript
varchar(254) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT ‘类别或者业务描述’,
pc_id
varchar(4) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT ‘pc_id’,
devid
varchar(36) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT ‘devid’,
PRIMARY KEY (sqlid
) USING BTREE,
INDEX index_pkid
(pkid
ASC) USING BTREE,
INDEX index_changed
(hotelid
ASC, changed
ASC, tableid
ASC) USING BTREE,
INDEX index_tableid
(hotelid
ASC, tableid
ASC) USING BTREE,
INDEX idx_newvalue_oldvalue_columnid_hotelid_changed
(newvalue
ASC, oldvalue
ASC, columnid
ASC, hotelid
ASC, changed
ASC) USING BTREE,
INDEX idx_pkid_tableid_hotelid_changed
(pkid
ASC, tableid
ASC, hotelid
ASC, changed
ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = ‘sys_lgfl’ ROW_FORMAT = Compact;
表结构
试试重启下tidb 集群。tiup cluster reload …
怎么解决的
tidb集群重启,问题依然存在。估计是bug吧?