常见错误处理

最近更新时间: 2026-03-13 09:03:00

本章节提供了在任务运行过程中,常见的错误及处理方法,用户可按照对应指导进行错误处理。

MySQL 常见错误

如下为 MySQL 数据库在迁移、同步过程中的报错和处理方法,所列错误码为 MySQL 系统的错误码。

错误码 报错码说明 报错场景 报错示例 分析和处理方法
1227 权限问题 数据迁移、数据同步 Error 1227: Access denied. - 问题分析
执行任务的账号没有连接源库/目标库的权限。
- 处理方法
给执行任务的账号进行授权。具体账号权限要求请参考操作指导中的对应文档。
1040 数据库连接数太多 数据迁移、数据同步 Error 1040: Too many connections. - 问题分析
数据库连接数太多。
- 处理方法
修改源数据库的最大连接数 max_connections 为更大值,关闭源库不使用的连接,或者稍后在业务量少时进行任务重试。
1045 操作被拒绝 数据迁移、数据同步 Error 1045 (28000): Access denied for user '{{xx}}'@'{{xx}}' (using password: xx) - 问题分析
- 在任务运行中用户修改了账号权限或密码信息。
- 在源库或者目标库上未对 DTS 的服务 IP 进行授权。
- 处理方法
- 检查是否有修改账号或者密码操作,如果有请撤销或者改回,具体账号权限要求请参考操作指导中的对应文档。
- 对 DTS 的服务 IP 进行授权。
1050 库表已存在,重复执行 DDL 语句 数据迁移、数据同步 Error 1050: Table {{}} already exists, binlog position:<{{*}}>, gtid:{{}}, related tables: {{*}} - 问题分析
- 创建多合一迁移/同步任务,多个源库执行了相同的 DDL 操作导致在目标库 DDL 操作重复。多合一场景中,仅支持在一个同步任务中勾选 DDL 操作。
- 任务过程中,用户同时在目标库中也创建了该表,导致源库 DDL 操作同步到目标库中,重复执行。
- 网络异常或语句执行时间太长,任务重试过程中造成 DDL 重复。
- 处理方法
按照如上分析排查。
1054 相关表中包含未知列 数据迁移、数据同步 Error 1054: Unknown column {{}} related tables: {{}} - 问题分析
- 在任务启动前,未选择迁移/同步该表结构,目标库中不包含对应列。
- 在任务运行中,用户同时操作了目标库,删除了该列。
- 处理方法
请在目标库上确认该列是否存在;如果不存在,请补齐该列后进行任务重试。
1062 主键冲突报错 数据同步 Error 1062: Duplicate entry '{{xx}}' for key 'PRIMARY', related tables: '{{xx}}'. - 问题分析
同步场景中,如果主键冲突处理机制选择冲突报错,则 DTS 遇到目标库与源库同步的数据发生主键冲突会报错。
- 在任务运行过程中,手动在目标库中写入数据,导致目标库中已存在相同主键的记录。
- 在任务运行前,源库关闭了唯一键检查,在源库本身已经存在重复主键数据。
- 在任务运行过程中,未同步 Delete 操作,导致源库数据删除后未同步至目标库,造成源库插入数据时与目标库主键冲突。
- 处理方法
- 检查源库是否有重复主键,如果有请先处理。
- 修改或者删除目标库中对应数据表的主键,然后重试任务。
1071 索引字段长度太长 数据迁移、数据同步 Error 1071 (42000): Specified key was too long; max key length is 767 bytes. - 问题分析
默认情况下,InnoDB 引擎单一字段索引的长度最大为767bytes,即:767/2<384个双字节的字段,或者767/3<256个三字节的字段。GBK 是双字节,UTF-8是三字节,utf8mb4_unicode_ci 是四字节。MySQL 5.6 及其以上版本,所有 MyISAM 表都会被自动转换为 InnoDB,所以在自建数据库上有超过767bytes的组合索引列,同样的建表语句在自建库上运行没问题,但是在 MySQL 5.6 版本以上就会有问题。
- 处理方法
修改文件中出错行组合索引列的长度。
示例-建表时索引长度定义最大为255:create table test(test varchar(255) primary key) char set utf8;
1146 库表不存在 数据迁移、
数据同步
Error 1146: Table '{{xx}}' doesn't exist on query. - 问题分析
- 任务过程中,目标库上删除了该表。
- 源库在数据导出阶段进行了库表结构变更的 DDL。
- 任务启动前,未选择迁移/同步该表结构。
- 处理方法
请到目标库上执行show create table xxx,确认该表是否存在;如果不存在,请在目标库上手动创建该表。
1213 源库和目标库双写引起死锁 数据迁移、数据同步 Error 1213: Deadlock found when trying to get lock; try restarting transaction, related tables: '{{xx}}'. - 问题分析
DTS 在目标库的写操作与用户在目标库的写操作冲突,造成死锁。
- 处理方法
- 终止死锁进程,重建任务。
- 建议实例控制下更新操作的加锁逻辑,给表加索引,尽量走行锁,减少锁开销。
1236 源端 Binlog 日志问题 数据迁移、数据同步 Error 1236 (HY000): Cannot replicate because the master purged required binary logs. Replicate the missing transactions from elsewhere, or provision a new slave from backup…… - 问题分析
源库 Binlog 日志保存时间短,DTS 拉取时已经被清理,或者拉取到的 Binlog 位点不正确。
- 处理方法
确认源库 Binlog 的保存时间(expire_logs_days)设置符合业务需求,建议保存时间大于3天,然后重建任务。
1414 数据导出阶段源库进行了变更库表结构的 DDL 数据迁移 Error 1414: Table definition has changed, please retry transaction. - 问题分析
在源库数据导出阶段,不能进行库表结构变更的 DDL 操作,否则会可能会导致报错。
- 处理方法
重建迁移任务。

DTS 常见错误

如下为 DTS 系统在迁移、同步过程中的常见报错及处理方法。

报错说明 报错场景 报错示例 分析和处理方法
数据库连接异常 数据迁移、数据同步 - {{}}invalid connection{{}}.
- driver: bad connection,{{}}
- dial tcp {{
}}: connect: connection refused.
问题分析
- 源/目标库被隔离或下线。
- 源/目标库长时间重启不成功。
- 源/目标库发生主从切换长时间不成功。
- 源/目标库负载过高。
- 人工或者程序定期/不定期地 Kill 源/目标库上的连接。
- 其他可能导致网络连接失败的情况,例如对源/目标库设置了网络安全策略阻止了接入请求。
处理方法
请按照上述分析逐个排查并解决。
对于云数据库,可通过实例控制台的监控信息协助排查和解决问题,解决成功后可在控制台重试任务进行恢复。
数据库连接异常 数据迁移、数据同步 dial tcp {{*}}: connect: connection refused. 问题分析
- 源/目标库被隔离或下线。
- 源/目标库长时间重启不成功。
- 源/目标库发生主从切换长时间不成功。
- 源/目标库负载过高。
- 其他可能导致网络连接失败的情况,对源/目标库设置了网络安全策略阻止了接入请求。
处理方法
请按照上述分析逐个排查并解决。
对于云数据库,可通过实例控制台的监控信息协助排查和解决问题,解决成功后可在控制台重试任务进行恢复。
源数据库存在较长时间的 SQL 在运行导致加锁失败 数据迁移、数据同步 - Find Resumable Error, src db has long query sql, fix it and try it later.
- Find Resumable Error: Task failed due to table lock failure caused by time-consuming SQL query statements in source instance.
问题分析
- 如果源数据库存在较长时间的 SQL 在运行(大于5s),为保证源数据业务不受影响,DTS 需要等慢 SQL 运行结束后再加锁进行数据导出,默认加锁时间为60s,超时后加锁失败,任务报错。
处理方法
- 处理源库中的慢 SQL 或者等慢 SQL 运行结束后进行任务重建。
Binlog 参数格式不符合要求 数据迁移、数据同步 - Statement binlog format unsupported:{{xx}}.
- binlog must ROW format, but MIXED now.
- binlog row before/after image not full, missing column {{xx}}, binlog position:{{xx}}, gtid:{{*}}.
问题分析
- 为了保证数据的正确性和完整性,DTS 会对源库 Binlog 相关参数做如下要求,在检查阶段也会对源库的 Binlog 参数进行检查,不符合要求则会报错,无法启动任务。
- 检查通过任务启动后,如果用户修改了源库 Binlog 参数也会导致任务报错,请确保源库 Binlog 满足如下要求。
- binlog_format 需要设置为 ROW
- binlog_row_image 需要设置为 FULL
处理方法
- 根据提示修改报参数,详细操作指导请参考 Binlog 参数检查,然后重建任务。
注意:参数修改后需要重启线程才能生效,数据库重启后参数会恢复初始配置,所以重启后请确认参数配置正确。