开发者社区> 问答> 正文

illegal json data

otter 4.2.13

com.alibaba.otter.canal.parse.exception.CanalParseException: com.alibaba.otter.canal.parse.exception.CanalParseException: parse row data failed. Caused by: com.alibaba.otter.canal.parse.exception.CanalParseException: parse row data failed. Caused by: java.lang.IllegalArgumentException: illegal json data at com.taobao.tddl.dbsync.binlog.JsonConversion.parse_scalar(JsonConversion.java:150) ~[canal.parse.dbsync-1.0.22.jar:na] at com.taobao.tddl.dbsync.binlog.JsonConversion.parse_value(JsonConversion.java:67) ~[canal.parse.dbsync-1.0.22.jar:na] at com.taobao.tddl.dbsync.binlog.JsonConversion$Json_Value.element(JsonConversion.java:272) ~[canal.parse.dbsync-1.0.22.jar:na] at com.taobao.tddl.dbsync.binlog.JsonConversion$Json_Value.toJsonString(JsonConversion.java:285) ~[canal.parse.dbsync-1.0.22.jar:na] at com.taobao.tddl.dbsync.binlog.JsonConversion$Json_Value.toJsonString(JsonConversion.java:295) ~[canal.parse.dbsync-1.0.22.jar:na] at com.taobao.tddl.dbsync.binlog.event.RowsLogBuffer.fetchValue(RowsLogBuffer.java:957) ~[canal.parse.dbsync-1.0.22.jar:na] at com.taobao.tddl.dbsync.binlog.event.RowsLogBuffer.nextValue(RowsLogBuffer.java:99) ~[canal.parse.dbsync-1.0.22.jar:na] at com.alibaba.otter.canal.parse.inbound.mysql.dbsync.LogEventConvert.parseOneRow(LogEventConvert.java:467) ~[canal.parse-1.0.22.jar:na] at com.alibaba.otter.canal.parse.inbound.mysql.dbsync.LogEventConvert.parseRowsEvent(LogEventConvert.java:377) ~[canal.parse-1.0.22.jar:na] at com.alibaba.otter.canal.parse.inbound.mysql.dbsync.LogEventConvert.parse(LogEventConvert.java:111) ~[canal.parse-1.0.22.jar:na] at com.alibaba.otter.canal.parse.inbound.mysql.dbsync.LogEventConvert.parse(LogEventConvert.java:62) ~[canal.parse-1.0.22.jar:na] at com.alibaba.otter.canal.parse.inbound.AbstractEventParser.parseAndProfilingIfNecessary(AbstractEventParser.java:327) ~[canal.parse-1.0.22.jar:na] at com.alibaba.otter.canal.parse.inbound.AbstractEventParser$3$1.sink(AbstractEventParser.java:177) ~[canal.parse-1.0.22.jar:na] at com.alibaba.otter.canal.parse.inbound.mysql.MysqlConnection.dump(MysqlConnection.java:121) ~[canal.parse-1.0.22.jar:na] at com.alibaba.otter.canal.parse.inbound.AbstractEventParser$3.run(AbstractEventParser.java:210) ~[canal.parse-1.0.22.jar:na] at java.lang.Thread.run(Thread.java:748) [na:1.8.0_161]

拉了几个patchillegal+json+data想替换canal1.0.22 ,没解决

用node4.2.13跟4.2.15 交替跑。 原因是4.2.13 不支持json, 4.2.15 不稳定会出现connect.connect() first

正常跑4.2.13 碰到json问题临时跑4.2.15

4.2.15 必现问题connect.connect() first

原提问者GitHub用户 luyee

展开
收起
古拉古拉 2023-06-18 10:23:36 65 0
2 条回答
写回答
取消 提交回答
  • 随心分享,欢迎友善交流讨论:)

    根据您提供的信息,您遇到了 Otter 在解析 binlog 时出现的 illegal json data 异常,同时也遇到了 Otter 在使用 4.2.15 版本时出现的 connect.connect() first 异常。

    针对这两个异常,可以尝试以下几个方法:

    illegal json data 异常:这个异常通常是由于 binlog 中包含了无效或者不合法的 JSON 数据导致的。为了解决这个问题,您可以尝试更新或者升级 Canal 的版本,以确保 Canal 能够正确解析 JSON 数据。同时,建议检查 binlog 中的数据是否符合 JSON 格式要求,并及时清理或者修复无效数据。

    connect.connect() first 异常:这个异常通常是由于 Otter 和 Canal 之间的网络连接存在问题导致的。为了解决这个问题,您可以尝试以下几个方法:

    检查 Canal 的配置信息,确保 Canal 启动正常,并已正确配置网络参数和端口信息。 检查防火墙和网络连接,确保 Otter 可以正常连接 Canal,并且能够通过网络访问 Canal 所在的服务器。 检查 Otter 的版本和配置信息,确保 Otter 已正确配置 Canal 的连接参数和协议信息。 尝试升级或者降级 Otter 的版本,以确保 Otter 和 Canal 之间的网络连接能够正常工作。 需要注意的是,针对这两个异常,应该综合考虑多个方面的因素,并及时备份和监控数据,以确保数据同步的正确性和稳定性。如果您仍然无法解决这两个问题,建议联系 Otter 的技术支持或者社区,以获得更好的帮助和支持。

    2023-06-30 17:42:18
    赞同 展开评论 打赏
  • 解决方案: retry for getTableMetaByDB

    原回答者GitHub用户 luyee

    2023-06-18 11:00:07
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载