跳到主要内容
版本:3.x

任务错误码及解决方案

适用版本Cloud 功能TapData Cloud 为您提供了云端服务,适合需要快速部署、低前期投资场景,帮助您更好地专注于业务发展而非基础设施管理,注册账号即可领取免费的 Agent 实例,欢迎试用。企业版功能TapData Enterprise 可部署在您的本地数据中心,适合对数据敏感性或网络隔离有严格要求的场景,可服务于构建实时数仓,实现实时数据交换,数据迁移等场景。社区版功能TapData Community 是一个开源的数据集成平台,提供基础的数据同步和转换功能,可通过 Docker 一键部署,帮助您快速探索和实施数据集成项目。随着项目或企业发展,您可以平滑升级至 TapData Cloud 或 TapData Enterprise,以获得更多高级功能或服务支持。

如果遇到任务异常,您可以通过任务的监控页面的底部查看相关日志信息,针对常见的问题,TapData 将其固化为特定的错误码方便您查找,同时提供了错误原因及其解决方案。

通用处理器

10001

错误码描述:客户端连接被服务端关闭,原因:

  • 服务端手动关闭了连接。
  • 服务端连接数过多,自动关闭或者拒绝了后续连接。

10002

错误码描述:用户名或者密码错误,原因:

  • 填写错误。
  • 密码中含有特殊字符。

解决方案

  • 尝试重新填写密码,并进行连接测试。
  • 尝试换一个没有特殊字符的密码,并反馈给技术支持解决。

10003

错误码描述:该错误发生在启动增量阶段,启动起始点在源库日志中已经不存在,大部分情况起始点为时间或者源库的日志 ID。对于大部分数据库,增量功能是基于数据库的日志文件实现的,引擎通过监听或者主动读取数据库日志文件,完成增量的读取阶段。

所以在读取前,引擎需要在日志中,依据起始点找到监听或者读取日志文件的具体位置,无法在日志文件中找到位置时,则会导致错误,原因:

  • 源库执行了日志文件的人工或定时清理。
  • 如果是增量任务,任务设置中\"增量采集开始时刻\",设置错误,或者时区与数据库时区不匹配导致的错误。
  • 增量速度过慢,导致延迟过大,此时源库的写入覆盖了最旧的日志,比如 MongoDB 的 Oplog,可以尝试调大日志空间,或者排查增量速度过慢的原因。

解决方案

  • 重置任务后再次启动,此时任务会重新初始化并顺利进入增量阶段
  • 重置任务后,将任务改为增量模式,设置增量起始时间后,再次启动任务。该方案需要人工的在源库中查询出最早的日志时间,确保设置的增量起始点包含在日志文件中,否则会丢失一部分增量数据。

10004

错误码描述:读取数据时,缺失了相应权限,原因:

  • 使用的数据连接中的用户,没有相应的读取权限。
  • 部分数据库,增量读取所需的权限较多,请查看创建数据源右侧的说明,确认权限是否设置正确。

10005

错误码描述:写入数据时,缺失了相应权限。

解决方案:检查目标节点所使用的数据连接中用户名是否缺失了写入权限。

10006

错误码描述:写入的数据类型与数据库实际的字段类型不一致,原因:

  • 运行任务前,目标表名在数据库中已存在,TapData 则不会自动创建该表,可能原有的表中字段存在与源表不一致的情况。
  • 源库是非结构化数据库,目标为结构化数据库,比如 MongoDB 同步到 Oracle,源端的某一个字段可能有多个类型,而目标结构化数据库一个字段不允许多个类型写入,会导致该错误。
  • 同步过程中,加入了计算节点,如js处理器,导致数据在处理节点类型变化,触发了该错误。

解决方案

  • 参考下方报错信息,比对出错的字段在源库和目标库的类型是否一致,如果不一致,使用数据库的DDL或类似命令进行修正后,再次运行任务。
  • 使用 JS 处理节点,将出错字段过滤,如出错字段为 field1,对应的 JS 为\"record.remove('field1')\"。
  • 如果用 JS 处理节点对数据类型进行了改动,则应在 JS 编辑框的下方,按照模型语法,将新的类型传递给 Tapdata,删除目标表后,再次运行任务。

10007

错误码描述:写入的数据长度与数据库实际的字段长度不一致,原因:

  • 运行任务前,目标表名在数据库中已存在,TapData 则不会自动创建该表,可能原有的表中字段存在与源表不一致的情况。
  • 源库是非结构化数据库,目标为结构化数据库,比如 MongoDB 同步到 Oracle,字符串类型在 MongoDB 中并没有固定长度限制,而 Oracle 在创建表的时候需要指定长度。此时可能导致超出长度的报错。
  • 同步过程中,加入了计算节点,如js处理器,导致数据在处理节点变化,触发了该错误。

解决方案

  • 参考下方报错信息,找到出错的字段,使用数据库的DDL或类似命令进行修正后,再次运行任务。
  • 使用 JS 处理节点,将出错字段过滤,如出错字段为 field1,对应的 JS 为\"record.remove('field1')\"。
  • 如果用 JS 处理节点对数据类型进行了改动,则应在 JS 编辑框的下方,按照模型语法,将新的类型传递给 Tapdata,删除目标表后,再次运行任务。

10008

错误码描述:写入数据时,违反了唯一约束,原因:目标表的唯一索引或主键与源表不一致。

解决方案

  • 使用数据库的 DDL 或类似命令,修改目标表的主键或唯一索引后,再次尝试启动任务。
  • 删除目标表,让 TapData 的自动建表功能重新创建表,再次尝试启动任务。
  • 在 TapData 的任务编辑界面,将目标表的并发写入关闭,再次尝试启动任务。

10009

错误码描述:写入数据时,违反了非空约束,原因:

  • 目标表的字段非空约束与源表不一致。
  • 使用了 JS 处理节点,在同步过程中将某些字段值设置为空,同时目标表中,该字段又是非空约束。

解决方案

  • 使用数据库的DLL或类似命令,去除目标表的非空约束后,再次尝试启动任务。
  • 检查 JS 逻辑,是否错误的将数据值改为了空或删除了报错字段。

任务处理器

11001

错误码描述:未知错误。

解决方案:联系技术支持解决。

11002

错误码描述:日志挖掘任务,将单条日志数据写入外部持久缓存失败,原因:外部缓存配置的数据库无法提供正常的服务。

解决方案:在挖掘任务监控界面,找到外部缓存的配置。检查该配置的数据库是否正常。

11006

错误码描述:任务启动时,引擎会根据创建的自定义节点模版初始化自定义节点,当初始化时获取不到定义的模版信息。

解决方案:单击系统左侧菜单高级功能 > 自定义节点查看当前创建的自定义模版。若自定义模版被删除,则需要重新创建自定义模版并重新配置任务。

11021

错误码描述:遇到 DDL 事件时,任务停止报错。

解决方案:可以通过设置其他 DDL 同步配置来避免此报错,如自动忽略所有 DDL 事件或同步 DDL 事件。

11022

错误码描述:任务遇到无法识别的 DDL 事件时,会出现此异常

解决方案:可在源节点 DDL 同步配置选择 “忽略所有 DDL” 选项,并且需要在目标数据库手动执行相同的 DDL 操作以保证源端与目标端模型后重新启动任务

11026

错误码描述:任务由使用共享挖掘模式切换为普通模式时无法正常启动。

解决方案:请重置任务后重新启动。

11027

错误码描述:启动增量任务时,由于增量采集开始时刻为空,导致任务无法启动。

解决方案:在任务中设置 增量采集开始时刻 为“此刻”或“用户指定时间”后重新启动任务。


共享挖掘读取器

13001

错误码描述:未知错误。

解决方案:联系技术支持解决。

13002

错误码描述:无法从日志数据获取正确的操作类型。

解决方案:查看详细的报错信息,其中op字段为空值或不存在,则代表数据可能已经被破坏,需要检查对应的日志挖掘任务是否出现错误。

13003

错误码描述:更新数据日志事件,更新后数据是空值或不存在。

13004

错误码描述:日志事件中,源表名为空或不存在

13005

错误码描述:元数据操作日志事件,操作的具体内容为空或不存在。

13006

错误码描述:日志事件为空。

13007

错误码描述:日志事件中,缺失操作类型属性。

13008

错误码描述:日志事件中,缺失断点信息。

13009

错误码描述:删除数据日志事件,删除数据是空值或不存在。

13010

错误码描述:写入数据日志事件,写入数据是空值或不存在。


目标处理器

15002

错误码描述:任务启动后,引擎会获取管理端推演出的目标表模型并根据目标表模型在目标数据库中创建表,获取不到目标表模型时报错。

解决方案:在管理端重置任务并重新运行任务,看任务能否正常启动,如不能正常启动则需要提工单排查问题。

15003

错误码描述:在同步任务中,如果目标数据库中没有目标节点表模型的表,引擎会在目标数据库自动创建表。如果自动创建表成功后,引擎为更新条件字段创建索引或同步源端表的索引创建索引失败。

解决方案

  • 关闭目标节点配置中高级设置 > 同步索引选项或删除源端数据库表中的引用函数的索引。
  • 在更新条件字段中剔除不支持创建索引的字段或目标节点中将不能创建索引的字段类型修改为可以在目标数据中创建索引并且保证数据写入时兼容的类型。
  • 为目标节点使用的连接的账号创建相应的创建索引权限。

15004

错误码描述:当目标节点在执行删除表结构时出错。

解决方案

  • 授予目标节点连接使用用户删除表权限。
  • 删除关联表的外键约束后重新启动任务。

15006

错误码描述:当目标节点配置中“如果目标表存在”的策略为“保持目标端原有表结构,清除数据”时,清除目标表数据失败。

解决方案

  • 删除引用目标表的外键约束。
  • 给授予目标节点的连接账号权限清空表。

15011

错误码描述:目标节点在执行新增字段操作时失败。

解决方案

  • 以“增量”的同步方式启动任务时,指定的增量采集开始时刻需要新增字段事件时间点之后,避免目标节点重复执行新增字段操作发生报错。
  • 授予目标节点使用连接的账号相应的权限。

15012

错误码描述:目标节点在执行修改字段名操作时失败

解决方案

  • 以“增量”的同步方式启动任务时,指定的增量采集开始时刻需要再修改字段名事件的时间点后,避免目标节点重复执行字段改名操作发生报错。
  • 授予目标节点使用连接的账号相应的权限。

15014

错误码描述:目标节点执行修改字段属性操作时失败

解决方案

  • 以“增量”的同步方式启动任务时,指定的增量采集开始时刻需要再修改字段名事件的时间点后,避免目标节点重复执行字段改名操作发生报错。
  • 授予目标节点使用连接的账号相应的权限。

15015

错误码描述:目标节点执行删除字段操作失败

解决方案

  • 以“增量”的同步方式启动任务时,指定的增量采集开始时刻需要再修删除字段事件的时间点后,避免目标节点重复执行删除字段操作发生报错。
  • 授予目标节点使用连接的账号相应的权限。

合并处理器

16006

错误码描述:合并的源表没有主键或唯一索引,无法对数据缓存,合并无法正常进行。

解决方案:请在源表中补充主键或者唯一索引。

16007

错误码描述:主从合并节点的写入模式为更新进内嵌数组,但是没有设置内嵌数组的匹配条件导致报错。

解决方案:请在界面设置内嵌数组的匹配条件。

16008

错误码描述:更新或写入缓存,根据联合键从缓存中查找数据失败。可能造成的原因:外存缓存不可以用,导致更新或写入不可用。

解决方案:检查外存连接是否可用。

16009

错误码描述:更新或写入缓存失败。可能造成的原因:外存缓存不可用,导致更新或写入不可用。

解决方案:检查外存是否可用。

16010

错误码描述:删除缓存,根据联合键从缓存中查找数据失败。可能造成的原因:外存缓存不可用,导致更新或写入不可用。

解决方案:检查外存是否可用。

16011

错误码描述:删除缓存失败。可能造成的原因:外存缓存不可用,导致更新或写入不可用。

解决方案:检查外存连接是否可用。

16018

错误码描述:主从合并配置中,缺少源端关联键配置。

解决方案:请在界面中主从合并节点补充源端关联配置。

16019

错误码描述:数据流到主从合并节点时,数据中缺少主从合并节点中设置的关联条件字段的值。产生这个错误的的原因可能是:

  • 在主从合并节点前、源节点后,存在处理节点,如标准 JS 节点/增强 JS 节点,处理节点将数据中的关联字段值移除,导致错误。
  • 主从合并节点的源节点的数据库为非结构化数据库,源节点某条数据中缺少关联字段的值,导致错误。

解决方案

  • 如果主从合并节点的源节点的数据库为非结构化数据库,如 MongoDB,数据中缺少关联字段的值,可以在源节点的后面、主从合并节点前加入其他处理节点如标准 JS/增强 JS 节点,并在脚本中加入如果数据缺少关联键,就将整条数据过滤的脚本代码,不往主从合并节点传输,保证任务正常运行
  • 如果主从合并节点前存在其他处理节点如标准JS/增强JS节点,请检查脚本中是否存在将数据中的关联键移除的代码或将源节点后继的处理节点删除

16020

错误码描述:主从合并配置中,缺少目标关联键配置。

解决方案:请在界面中主从合并节点补充目标关联配置。

16021

错误码描述:数据中不存在主键或唯一索引的值,可能造成的原因:是否在主从合并节点有处理节点将主键或唯一索引的值删除。

解决方案:请检查是否存在处理节点将关联键的值删除。


共享挖掘任务处理器

19002

错误码描述:共享挖掘任务会将从源端读取出增量事件并缓存在外存数据库中,给开启共享挖掘的复制/转换任务使用。将增量事件写入外存数据库失败。

解决方案:检查外存缓存数据库是否正常,可以单击系统左侧菜单栏中系统管理 > 外存管理,找到共享挖掘任务对应的外存配置,执行连接测试看是否可用,如不可用则需要根据测试失败信息进行排查,待连接测试通过后重新启动共享挖掘任务。

19005

错误码描述:在共享挖掘启动任务之前,引擎会生成一个开始标记写到缓存外存数据库的表中,将开始标记写到缓存外存数据库失败。

解决方案:检查外存缓存数据库是否正常,可以单击系统左侧菜单栏中系统管理 > 外存管理,找到共享挖掘任务对应的外存配置,执行连接测试看是否可用,如不可用则需要根据测试失败信息进行排查,待连接测试通过后重新启动共享挖掘任务。

19006

错误码描述:共享挖掘任务会将从源端读取出增量事件并缓存在外存数据库中,给开启共享挖掘的复制/转换任务使用。共享挖掘将单条增量事件的日志内容写入外存数据库失败时,会报此报错。

解决方案:检查外存缓存数据库是否正常,可以单击系统左侧菜单栏中系统管理 > 外存管理,找到共享挖掘任务对应的外存配置,执行连接测试看是否可用,如不可用则需要根据测试失败信息进行排查,待连接测试通过后重新启动共享挖掘任务。


外存管理器

20001

错误码描述:缓存记录写入外存时失败

解决方案:检查外存缓存数据库是否正常,可以单击系统左侧菜单栏中系统管理 > 外存管理,找到共享挖掘任务对应的外存配置,执行连接测试看是否可用,如不可用则需要根据测试失败信息进行排查,待连接测试通过后重新启动共享挖掘任务。

20002

错误码描述:在启动任务时,会查找可用的外存配置进行初始化外存数据库时,找不到可用的外存配置

解决方案:在管理菜单中单击系统管理 > 外存管理,进到外存管理界面后,单击创建外存,填写创建外存需要的信息,并单击连接测试通过后保存,保存成功后将创建的外存需要设为默认外存。

20002

错误码描述:根据缓存名称获取缓存,传入的缓存名称编码失败时。则会报此错误。

解决方案:在根据缓存名称获取缓存时,传入的缓存名称需要能被 UTF-8 编码。


精确一次写入处理器

22003

错误码描述:当目标开启增量精确一次写入时,每条增量事件会生成对应的一条精准一次写的记录事件写入精确一次缓存表,并且它们是在同一个事务写入数据库。精准一次记录事件写入目标数据库失败,并且会回滚整批事件。

解决方案

  • 根据失败原因排查是否为目标数据库问题。如是否为目标数据库宕机,如出现宕机,则需要恢复目标数据库并重新启动同步任务。
  • 查看数据库精确一次缓存表(表名为_TAP_EXACTLY_ONCE_CACHE)是否被误删,如被误删,则需要重新启动同步任务。

表映射处理器

29002

错误码描述:引擎运行任务时需要使用管理端启动前推演出来的模型。当引擎访问管理端接口获取不到模型时,则会报此错误。

解决方案:重置并启动任务,看是否还会出现一样的错误,如果继续出现需要提工单研发排查。


脚本处理器

30004

错误码描述:执行引擎脚本失败。

解决方案

  • 检查脚本内容是否出现不支持的语法错误。
  • 检查脚本内容是存在不支持的函数。

30011

错误码描述:任务中的 Python 节点中的脚本中存在语法错误,导致无法创建 Python 执行引擎。

解决方案:根据报错提示,检查并修改 Python 节点中的脚本错误代码,试运行通过后重新后重新启动任务。


动态表名处理器

35006

错误码描述:源节点中识别出表改名 DDL 事件与任务中的表编辑节点产生冲突。

解决方案

  • 修改任务配置,删除表编辑节点。
  • 将源节点的节点配置中,高级设置 > DDL 同步配置修改为自动忽略所有 DDL,这样源节点将忽略 DDL 事件,不会与表编辑节点产生冲突。