这是我的报错信息:
用的最新版本的8.5.6离线安装,ARM架构;上游数据库也是ARM下的Mysql:mysql Ver 8.0.31 for Linux on aarch64 (MySQL Community Server - GPL)
CPU和内存没有任何问题,上游binlog也能正常解析;
目前的现象是dm-worker启动不起来,端口没有监听,报上图错误;导致binlog无法消费,但是大约跳过3800个事务节点后 即从681333121跳到682051882点位又可以正常消费下去,中间我随机挑选了几个点位,都会报一样的错误;
个人怀疑是有个表没有建唯一索引导致的,但在另外一台amd机器上,tidb版本是8.5.1的机器上却能正常消费
【TiDB 使用环境】生产环境 /测试环境
【TiDB 版本】
【部署方式】云上部署(什么云)/机器部署
【操作系统/CPU 架构/芯片详情】
【机器部署详情】CPU大小/内存大小/磁盘大小
【集群数据量】
【集群节点数】
【问题复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【复制黏贴 ERROR 报错的日志】
【其他附件:截图/日志/监控】
1 个赞
目前看上游的binlog能解析,内存和CPU也是正常的;尝试过解析binlog跳过一些表格,也尝试跳过binlog,但还是会继续遇到该错误
1 个赞
panic: runtime error: comparing uncomparable type uint8这个错误是 TiFlow/DM 同步组件的已知 BUG,出现在:
TiDB / DM / TiCDC 8.5.6 版本
ARM 架构
上游 MySQL 8.0.31(aarch64)
同步表包含 BINARY / VARBINARY / JSON / BLOB 这类字节数组类型( uint8)
直接原因:
DM 在判断主键 / 唯一键是否更新时,对 uint8(字节切片类型)做了 == 比较,而 Go 语言中 uint8 不可直接比较,直接触发进程 panic。
1 个赞
请问一下,这个需要怎么修复呢??目前确实有个表是没有主键
独善其身
(Ti D Ber Bi Rqfz5 K)
2026 年5 月 20 日 03:12
5
等值比较操作不兼容吗?需要转换成函数实现等值比较?
wbslxw
(Ti D Ber Cl S0j Eng)
2026 年5 月 20 日 03:38
6
这个 Bug 只在 ARM 架构 + 8.5.6 版本 + 无主键 + 字节数组类型 组合下触发,其他环境不受影响
已知该 Bug 在后续版本(如 8.5.7+)中已修复,升级 DM 组件即可
方便上传下 binlog 文件和schema信息吗,我们复现下
这个binlog文件不太方便上传…因为是内部数据
这个表格现在依然没有索引,但是可以正常跑,感觉像是偶发的…最近一个月复现了2次,前面几次我怀疑是内存问题,这次排除了所有因素,跳过binlog之后就正常了
我贴一下建表语句:
CREATE TABLE base_comprehensive_inspection_lat_lon_cursor (
id int NOT NULL DEFAULT ‘0’,
patrol_id varchar(128) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT ‘巡查id’,
create_time datetime DEFAULT NULL COMMENT ‘创建时间’,
lon varchar(32) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT ‘巡查id’,
lat varchar(32) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT ‘巡查id’,
source varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT ‘来源(手机或者设备)’,
push_time datetime DEFAULT CURRENT_TIMESTAMP COMMENT ‘上传时间’,
KEY idx_create_time (create_time),
KEY idx_patrol_id_source (patrol_id,source)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT=‘巡查经纬度临时表’;