DMS同步报错了,一直在重试怎么解决?[阿里云]

同步报错了,一直在重试【UID】:1974894787907993
【实例ID】:dtsjfh124u014mo3pi
【Job ID】:w3q12nh814ah1ia
【任务名称】:g3s-正式-rds-迁移-2023
【所有报错信息】:
CODE:DTS-RETRY-ERR-0042
错误概述:连接数据库遇到问题。
解决方案:请检查数据库是否可以正常连接。
帮助文档:https://help.aliyun.com/document_detail/462133.html#DTS-RETRY-ERR-0042
详细报错信息:将数据写入目标库异常,正在重试,重试了435次,重试了4348s,异常重试原因:
database-framework: DTS-61001: disperse error for column:id BIGINT not nullable unique as id of table:g_a128_db.send_bi, value=49101813, valueType=IntegerNumeric, disperser=com.alibaba.amp.any.mysql.disperse.impl.IntegerValue2MySQLNumericDisperser@4c2d7007, source schema=g_a128_db.send_bi{isWidthTable:false,tableEngine:InnoDB}
cause:
SQLException: No operations allowed after statement closed.
【URL】:https://dtsnew.console.aliyun.com/sync/cn-zhangjiakou
【当前时间】:2023-12-14 17:14:17
【Region】:cn-zhangjiakou

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
=====这是一个广告位,招租中,联系qq 78315851====
2 条回复 A 作者 M 管理员
  1. 问题出在连接数据库时,具体原因是SQLException: No operations allowed after statement closed。这个错误表示在关闭语句后,不允许进行其他操作。这可能是因为在执行插入操作时,发生了异常,导致插入操作被关闭,但重试机制仍在尝试执行插入操作。
    要解决这个问题,你可以尝试以下方法:

    1. 检查目标数据库是否可以正常连接。你可以通过其他方式(如使用MySQL客户端)尝试连接到目标数据库,确认是否可以正常连接。
    2. 检查源数据和目标表结构是否一致。这个问题可能是由于源数据和目标表结构不匹配导致的。请检查源数据和目标表的字段类型、约束等是否一致。
    3. 检查插入操作的逻辑。这个问题可能是由于插入操作的逻辑有问题导致的。例如,可能存在循环插入操作,导致在某个时刻插入操作被关闭。请检查插入操作的逻辑,确保插入操作在正确的位置执行。
    4. 调整重试策略。如果以上方法都无法解决问题,你可以尝试调整重试策略,例如增加重试次数或者重试间隔。但是这可能会增加同步时间。
      Connection conn = null;        PreparedStatement stmt = null;        ResultSet rs = null;        try {            conn = ConnectionUtil.getInstance().getConnection();            ...        } finally {            if (rs != null) {                rs.close();            }            if (stmt != null) {                stmt.close();            }            if (conn != null) {                ConnectionUtil.getInstance().close(conn);            }        }
  2. 您好,原因为目标库性能原因导致批量写入数据量过大时目标库连接断开,目前适当降低了全量速率,已正常写入,但写入较慢,建议您检查下目标库性能和负载情况,看下是否有异常的指标 —该回答整理自钉群“阿里云DMS数据管理用户交流群”

  3. 从提供的报错信息来看,存在以下问题:

    1. 连接数据库遇到问题:这可能是因为数据库服务器不可达、网络问题、数据库服务未运行或者访问权限问题等。你需要检查源数据库和目标数据库的网络连接、服务状态和访问权限设置。

    2. 数据写入目标库异常:具体错误为在插入数据到目标表g_a128_db.send_biid列时出现问题。id列被定义为BIGINT类型,且不允许为空和重复。但在插入值49101813时出现了分散错误(disperse error)。

    3. SQL异常:报错信息中提到”No operations allowed after statement closed.”,这意味着在尝试执行SQL操作时,该语句已经被关闭,可能是由于之前的操作导致了语句关闭,或者在处理过程中存在资源释放不当的问题。

    解决这个问题的步骤可能包括:

    1. 检查源数据库和目标数据库的网络连接、服务状态和访问权限设置,确保DTS服务能够正常连接和访问这两个数据库。

    2. 对于数据写入异常,需要检查源数据中的id值是否合法,是否存在重复或者不符合目标表定义的情况。如果源数据有问题,需要修复源数据;如果目标表定义过于严格,可能需要适当调整目标表的约束条件。

    3. 对于SQL异常,需要查看相关的代码或者日志,找出导致语句关闭的原因。可能需要优化代码以确保资源正确管理和释放。