canal.deployer-1.1.6 的 1146 错误码问题

说明

在使用 canal 1.1.6 版本(当前时间:2022-08),配置 MySQL 读写规则(此处配置的是 test 数据库)后,启动 canal,虽然控制台中显示启动成功,但是查看实例日志,却有很多报错。


image.png

具体错误信息如下:

2022-08-04 14:49:47.346 [destination = example , address = /127.0.0.1:3306 , EventParser] ERROR com.alibaba.otter.canal.common.alarm.LogAlarmHandler - destination:example[com.alibaba.otter.canal.parse.exception.CanalParseException: java.io.IOException: ErrorPacket [errorNumber=1146, fieldCount=-1, message=Table 'test.base table' doesn't exist, sqlState=42S02, sqlStateMarker=#]
 with command: show create table `test`.`BASE TABLE`;
Caused by: java.io.IOException: ErrorPacket [errorNumber=1146, fieldCount=-1, message=Table 'test.base table' doesn't exist, sqlState=42S02, sqlStateMarker=#]
 with command: show create table `test`.`BASE TABLE`;
    at com.alibaba.otter.canal.parse.driver.mysql.MysqlQueryExecutor.queryMulti(MysqlQueryExecutor.java:109)
    at com.alibaba.otter.canal.parse.inbound.mysql.MysqlConnection.queryMulti(MysqlConnection.java:111)
    at com.alibaba.otter.canal.parse.inbound.mysql.tsdb.DatabaseTableMeta.dumpTableMeta(DatabaseTableMeta.java:233)
    at com.alibaba.otter.canal.parse.inbound.mysql.tsdb.DatabaseTableMeta.rollback(DatabaseTableMeta.java:174)
    at com.alibaba.otter.canal.parse.inbound.mysql.AbstractMysqlEventParser.processTableMeta(AbstractMysqlEventParser.java:142)
    at com.alibaba.otter.canal.parse.inbound.AbstractEventParser$1.run(AbstractEventParser.java:197)
    at java.lang.Thread.run(Unknown Source)
]

解决方法

方法一:使用旧版本的 canal,例如:canal-1.1.5
canal github地址:https://github.com/alibaba/canal

方法二:修改实例配置文件中表的黑名单过滤规则(没试过)
canal.instance.filter.black.regex=..BASE.

方法二:替换 canal 中的 canal.parser.jar 包(没试过)
先拉取 canal 源代码,使用 mvn clean package 打包后,替换掉 canal.parser.jar 包。

你可能感兴趣的:(canal.deployer-1.1.6 的 1146 错误码问题)