首页/数据/数据库速查/SQL 线程报 1032(行不存在)
主从复制与高可用53 条

SQL 线程报 1032(行不存在)

删除/更新找不到目标行:通常因为从库缺行(跳事务遗毒、数据被清理)或主从未严格一致;修复要么补齐数据,要么按 GTID 跳过后记入核查清单。

数据库速查数据更新于 2026-10-13

1032 行不存在怎么处理

从库 SQL 线程报 1032 表示要删除或更新的行在从库上找不到,通常源于三类原因:历史上用跳过方式处理过错误、从库数据被单独清理或修改、主从在某个时间点起就不再严格一致。报错里会带上具体的主键值,可据此定位到具体数据。

基本信息

适用MySQL 5.7 / 8.0 复制环境
报错特征Could not execute Delete_rows 或 Update_rows,附主键值
根因历史跳过事务、从库数据被清理、数据修复不当
处理底线采用跳过方式时必须记录并在后续一致性校验中复查

定位与处理

定位与处理
SHOW REPLICA STATUS\G            # 看 Last_SQL_Errno 与 Last_SQL_Error 的完整内容
SELECT COUNT(*) FROM appdb.orders WHERE id = 88991;   # 用报错里给出的主键值确认行是否存在
SELECT * FROM appdb.orders WHERE id = 88991;          # 必要时对比主库同行的内容
-- 方案一:从源端补回该行,再恢复重放(优先,尽量保持数据一致)
-- 方案二:按 GTID 跳过该事务(必须留档,事后做一致性校验)
SELECT @@GLOBAL.gtid_executed;                        # 记录跳过前后的 GTID 位置
-- 校验工具:pt-table-checksum 做全库一致性核对

常见根因与判断

根因表现处理方向
历史跳过事务错误集中在某些主键区间补齐数据后校验,避免继续累积
从库数据被清理从库缺少主库存在的行从源端补行或重建从库
主从数据不一致同类错误反复出现做一致性校验并评估重建
数据修复脚本出错错误出现时间与操作时间吻合核对脚本并对齐数据
主键冲突(1062)成对出现插入找不到目标的相反情况两者都是数据漂移症状,统一治理

典型使用场景

  • 复制中断后快速判断是数据问题还是配置问题
  • 跳过事务前评估影响,避免无记录的操作
  • 巡检脚本定期检查从库错误与延迟
  • 一致性校验发现问题后的修复路径选择
  • 事故复盘:追溯历史上跳过操作留下的隐患
补数据时要注意与重放竞争:建议先停住 SQL 线程、补完数据再启动,否则补入的行可能再次冲突。
只跳过不核查会让漂移越滚越大,最终只能重建从库;每一次跳过都必须记录主键值与原因,并纳入后续校验清单。

易错点

  • 反复跳过不核查:数据漂移累积到无法修补,只能重建从库
  • 补数据时不停 SQL 线程:补行与重放竞争,出现新的冲突
  • 把 1032 与 1062 分开看:两者都是数据漂移的孪生症状,应统一做一致性校验
  • 跳过操作没有记录:后续对账时无法解释差异来源

数据来源与参考

  • MySQL 8.0 Reference Manual: Error 1032
  • Percona Toolkit: pt-table-checksum

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌