错误信息:
[2025/07/01 10:13:01.265 +08:00] [ERROR] [distsql.go:1567] [“table reader fetch next chunk failed”] [conn=2613480208] [session_alias=] [error=“context canceled”]
[2025/07/01 10:13:01.265 +08:00] [ERROR] [distsql.go:1567] [“table reader fetch next chunk failed”] [conn=2613480208] [session_alias=] [error=“context canceled”]
[2025/07/01 10:13:01.265 +08:00] [ERROR] [distsql.go:1567] [“table reader fetch next chunk failed”] [conn=2613480208] [session_alias=] [error=“context canceled”]
这个错误场景可以重演
表结构信息:
CREATE TABLE organ_fea_source
(
id
bigint NOT NULL AUTO_INCREMENT COMMENT ‘主键’,
organ_mapping_id
bigint NOT NULL COMMENT ‘机构映射关系id’,
key_id
varchar(100) COLLATE utf8mb4_general_ci NOT NULL COMMENT ‘文献keyid’,
title_organ
text COLLATE utf8mb4_general_ci NOT NULL COMMENT ‘文献中的organ’,
source
varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT ‘来源’,
fea
text COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT ‘暂存的别名’,
limit_item
text COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT ‘限定项’,
exclude_item
text COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT ‘排除项’,
standard_id
bigint DEFAULT NULL COMMENT ‘别名添加到的虚拟机构id’,
manual_id
bigint DEFAULT NULL COMMENT ‘别名添加到的真实机构id’,
status
tinyint NOT NULL DEFAULT ‘1’ COMMENT ‘数据状态,1-待处理,2-手动隐藏,3-已匹配,4-已添加’,
create_time
datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT ‘创建时间’,
create_by
varchar(100) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT ‘创建人(系统创建为null)’,
modify_time
datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT ‘修改时间’,
modify_by
varchar(100) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT ‘修改人’,
update_time
datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT ‘最后修改时间’,
PRIMARY KEY (id
) /*T![clustered_index] CLUSTERED */,
KEY key_id_idx
(key_id
),
KEY modify_time_idx
(modify_time
),
KEY title_organ_idx
(title_organ
(20)),
KEY idx_mapping_id
(organ_mapping_id
,status
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci AUTO_INCREMENT=278358722 COMMENT=‘机构别名提取表’;
执行SQL:SELECT id,organ_mapping_id,key_id,title_organ,source,fea,limit_item,exclude_item,standard_id,manual_id,status,create_time,create_by,modify_time,modify_by FROM organ_fea_source
WHERE (organ_mapping_id IN (80,6646) AND status IN (1) AND title_organ LIKE ‘CNR%’) LIMIT 20,20
必定会出现错误日志,但是不影响结果,查看SQL 执行步骤是走的idx_mapping_id索引。
换成任何条件都是会出现错误日志
如果执行以下SQL不会报错:
SELECT id,organ_mapping_id,key_id,title_organ,source,fea,limit_item,exclude_item,standard_id,manual_id,status,create_time,create_by,modify_time,modify_by FROM organ_fea_source
WHERE (organ_mapping_id IN (80,6646) AND status IN (1) AND title_organ LIKE ‘CNR’) LIMIT 20,20
SELECT id,organ_mapping_id,key_id,title_organ,source,fea,limit_item,exclude_item,standard_id,manual_id,status,create_time,create_by,modify_time,modify_by FROM organ_fea_source
WHERE (organ_mapping_id IN (80,6646) AND status IN (1) AND title_organ = ‘CNR’) LIMIT 20,20
同时我还用以下SQL检查,都没有发现异常:
ANALYZE TABLE organ_fea_source
;
ADMIN CHECK TABLE organ_fea_source;
把索引删除后重建 也不能解决这个错误
表的数据量有1.6亿条,存储大小40GB。