开发者社区> 问答> 正文

表结构解析失败,unknow column

tag: canal-1.0.26-preview-2 表中有一列名:conf_key

2018-05-17 13:28:36.412 [destination = xxxxx , address = xxxxx , EventParser] ERROR c.a.otter.canal.p arse.inbound.mysql.MysqlEventParser - dump address /10.4.217.125:5002 has an error, retrying. caused by java.lang.RuntimeException: unknow column : conf_key(8) at com.alibaba.otter.canal.parse.inbound.TableMeta.getFieldMetaByName(TableMeta.java:74) ~[canal.parse-1.0.26-SN APSHOT.jar:na] at com.alibaba.otter.canal.parse.inbound.mysql.tsdb.MemoryTableMeta.processTableElement(MemoryTableMeta.java:227 ) ~[canal.parse-1.0.26-SNAPSHOT.jar:na] at com.alibaba.otter.canal.parse.inbound.mysql.tsdb.MemoryTableMeta.parse(MemoryTableMeta.java:153) ~[canal.pars e-1.0.26-SNAPSHOT.jar:na] at com.alibaba.otter.canal.parse.inbound.mysql.tsdb.MemoryTableMeta.find(MemoryTableMeta.java:108) ~[canal.parse -1.0.26-SNAPSHOT.jar:na] at com.alibaba.otter.canal.parse.inbound.mysql.tsdb.DatabaseTableMeta.compareTableMetaDbAndMemory(DatabaseTableM eta.java:289) ~[canal.parse-1.0.26-SNAPSHOT.jar:na] at com.alibaba.otter.canal.parse.inbound.mysql.tsdb.DatabaseTableMeta.applySnapshotToDB(DatabaseTableMeta.java:2 51) ~[canal.parse-1.0.26-SNAPSHOT.jar:na] at com.alibaba.otter.canal.parse.inbound.mysql.tsdb.DatabaseTableMeta.rollback(DatabaseTableMeta.java:129) ~[can al.parse-1.0.26-SNAPSHOT.jar:na] at com.alibaba.otter.canal.parse.inbound.mysql.AbstractMysqlEventParser.processTableMeta(AbstractMysqlEventParse r.java:72) ~[canal.parse-1.0.26-SNAPSHOT.jar:na] at com.alibaba.otter.canal.parse.inbound.AbstractEventParser$3.run(AbstractEventParser.java:170) ~[canal.parse-1 .0.26-SNAPSHOT.jar:na] at java.lang.Thread.run(Thread.java:745) [na:1.8.0_45]

原提问者GitHub用户yueapple

展开
收起
绿子直子 2023-05-09 10:27:39 94 0
2 条回答
写回答
取消 提交回答
  • 和1.0.25 比较,MemoryTableMeta 删掉这几行,就不会出错了

    回答24.png

    原回答者GitHub用户agapple

    2023-05-10 09:36:57
    赞同 展开评论 打赏
  • 随心分享,欢迎友善交流讨论:)

    Canal在解析MySQL binlog时,需要从MySQL数据库中获取表结构信息,并将其缓存到内存中。如果表结构发生变化,Canal会重新从MySQL数据库中获取表结构信息并更新缓存。在这个过程中,如果MySQL数据库中的表结构信息与缓存中的不一致,可能会导致表结构解析失败。

    根据你提供的错误日志,可以看到Canal在解析表结构时,出现了一个java.lang.RuntimeException异常,提示“unknow column : conf_key(8)”错误。这个错误可能是由于MySQL数据库中的表结构信息与缓存中的不一致导致的。

    针对这个问题,可以尝试以下几个方面进行排查:

    检查MySQL数据库中的表结构信息是否正确。可以通过使用MySQL客户端连接到MySQL服务器,执行SHOW CREATE TABLE语句来查看表结构信息,并确认conf_key列是否存在。

    检查Canal解析MySQL binlog时是否正确配置了MySQL数据库的用户名、密码和schema等信息。可以在Canal的配置文件中确认这些信息是否正确,尝试重新启动Canal服务。

    检查Canal的版本是否与MySQL数据库的版本兼容。不同版本的MySQL可能存在差异,需要确认Canal和MySQL的版本是否一致或兼容。

    尝试清除Canal缓存中的表结构信息,并重新从MySQL数据库中获取表结构信息。可以在Canal的配置文件中配置canal.instance.memoryTableMetaCache.enabled=false,然后重新启动Canal服务,让Canal重新从MySQL数据库中获取表结构信息。注意:这个操作会清除所有的表结构信息缓存,可能会影响Canal的性能和稳定性。

    需要注意的是,Canal的使用比较复杂,问题的原因可能比较多,需要结合具体的环境和情况进行分析和解决。

    2023-05-09 10:41:24
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
神龙云服务器产品及技术深度解析 立即下载
弹性创造价值:基于ECS的最佳性价比实践解析 立即下载
又快又稳:阿里云下一代虚拟交换机解析 立即下载

相关镜像