任务错误码及解决方案
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
错误码描述:日志挖掘任务,将单条日志数据写入外部持久缓存失败,原因:外部缓存配置的数据库无法提供正常的服务。
解决方案:在挖掘任务监控界面,找到外部缓存的配置。检查该配置的数据库是否正常。
13001
错误码描述:未知错误。
解决方案:联系技术支持解决。
13002
错误码描述:无法从日志数据获取正确的操作类型。
解决方案:查看详细的报错信息,其中op字段为空值或不存在,则代表数据可能已经被破坏,需要检查对应的日志挖掘任务是否出现错误。
13003
错误码描述:更新数据日志事件,更新后数据是空值或不存在。
13004
错误码描述:日志事件中,源表名为空或不存在
13005
错误码描述:元数据操作日志事件,操作的具体内容为空或不存在。
13006
错误码描述:日志事件为空。
13007
错误码描述:日志事件中,缺失操作类型属性。
13008
错误码描述:日志事件中,缺失断点信息。
13009
错误码描述:删除数据日志事件,删除数据是空值或不存在。
13010
错误码描述:写入数据日志事件,写入数据是空值或不存在。