Closed qq664042 closed 2 years ago
我也遇到了这个问题 java.io.IOException: ErrorPacket [errorNumber=1146, fieldCount=-1, message=Table 'test.base table' doesn't exist, sqlState=42S02, sqlStateMarker=#]
https://github.com/alibaba/canal/issues/4220 我也遇到了,源码编译没问题。当时提了issue之后官方重新上传了包和 docker 镜像,但重新上传的好像还是有问题
Reference i
有没有发现源码包与字节码包的上传日期相差好几天啊 现在是不知道怎么用源码包,打包成目标的字节码包。
https://github.com/alibaba/canal/issues/4219#issuecomment-1152913052 当时我也发现了,我就是通过这个日期发现官方重新上传了一次包。 我当时是把代码拉下来,然后从1.1.6的tag创建一个本地分支,mvn package,把打包出来的canal.parser.jar替换掉,就换了一个jar包
#4219 (comment) 当时我也发现了,我就是通过这个日期发现官方重新上传了一次包。 我当时是把代码拉下来,然后从1.1.6的tag创建一个本地分支,mvn package,把打包出来的canal.parser.jar替换掉,就换了一个jar包
好像可以这样打包,打包完之后在根目录下的target里面 mvn clean install -Dmaven.test.skip=true -Denv=release
开始一直以为是我的数据库有问题,后面我发现老是在创建BASE TABLE表 可以在conf/example/instance.properties中
canal.instance.filter.black.regex=new_energy\\.BASE.*
开始一直以为是我的数据库有问题,后面我发现老是在创建BASE TABLE表 可以在conf/example/instance.properties中
canal.instance.filter.black.regex=new_energy\\.BASE.*
这种方式好像是可以,但是源码包与安装包的代码不到至总感觉怪怪的
开始一直以为是我的数据库有问题,后面我发现老是在创建BASE TABLE表 可以在conf/example/instance.properties中
canal.instance.filter.black.regex=new_energy\\.BASE.*
我用配置这个后还是报错,还有其他地方需要修改配置吗?
发现报错的信息每个环境不一样
2022-06-24 09:07:23.788 [destination = example , address = /127.0.0.1:3338 , 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 'mysql.BASE TABLE' doesn't exist, sqlState=42S02, sqlStateMarker=#]
with command: show create table `mysql`.`columns_priv`;show create table `mysql`.`BASE TABLE`;show create table `mysql`.`db`;show create table `mysql`.`BASE TABLE`;show create table `mysql`.`engine_cost`;show create table `mysql`.`BASE TABLE`;show create table `mysql`.`event`;show create table `mysql`.`BASE TABLE`;show create table `mysql`.`func`;show create table `mysql`.`BASE TABLE`;show create table `mysql`.`general_log`;show create table `mysql`.`BASE TABLE`;show create table `mysql`.`gtid_executed`;show create table `mysql`.`BASE TABLE`;show create table `mysql`.`help_category`;show create table `mysql`.`BASE TABLE`;show create table `mysql`.`help_keyword`;show create table `mysql`.`BASE TABLE`;show create table `mysql`.`help_relation`;show create table `mysql`.`BASE TABLE`;show create table `mysql`.`help_topic`;show create table `mysql`.`BASE TABLE`;show create table `mysql`.`innodb_index_stats`;show create table `mysql`.`BASE TABLE`;show create table `mysql`.`innodb_table_stats`;show create table `mysql`.`BASE TABLE`;show create table `mysql`.`ndb_binlog_index`;show create table `mysql`.`BASE TABLE`;show create table `mysql`.`plugin`;show create table `mysql`.`BASE TABLE`;show create table `mysql`.`proc`;show create table `mysql`.`BASE TABLE`;show create table `mysql`.`procs_priv`;show create table `mysql`.`BASE TABLE`;show create table `mysql`.`proxies_priv`;show create table `mysql`.`BASE TABLE`;show create table `mysql`.`server_cost`;show create table `mysql`.`BASE TABLE`;show create table `mysql`.`servers`;show create table `mysql`.`BASE TABLE`;show create table `mysql`.`slave_master_info`;show create table `mysql`.`BASE TABLE`;show create table `mysql`.`slave_relay_log_info`;show create table `mysql`.`BASE TABLE`;show create table `mysql`.`slave_worker_info`;show create table `mysql`.`BASE TABLE`;show create table `mysql`.`slow_log`;show create table `mysql`.`BASE TABLE`;show create table `mysql`.`tables_priv`;show create table `mysql`.`BASE TABLE`;show create table `mysql`.`time_zone`;show create table `mysql`.`BASE TABLE`;show create table `mysql`.`time_zone_leap_second`;show create table `mysql`.`BASE TABLE`;show create table `mysql`.`time_zone_name`;show create table `mysql`.`BASE TABLE`;show create table `mysql`.`time_zone_transition`;show create table `mysql`.`BASE TABLE`;show create table `mysql`.`time_zone_transition_type`;show create table `mysql`.`BASE TABLE`;show create table `mysql`.`user`;show create table `mysql`.`BASE TABLE`;
Caused by: java.io.IOException: ErrorPacket [errorNumber=1146, fieldCount=-1, message=Table 'mysql.BASE TABLE' doesn't exist, sqlState=42S02, sqlStateMarker=#]
with command: show create table `mysql`.`columns_priv`;show create table `mysql`.`BASE TABLE`;show create table `mysql`.`db`;show create table `mysql`.`BASE TABLE`;show create table `mysql`.`engine_cost`;show create table `mysql`.`BASE TABLE`;show create table `mysql`.`event`;show create table `mysql`.`BASE TABLE`;show create table `mysql`.`func`;show create table `mysql`.`BASE TABLE`;show create table `mysql`.`general_log`;show create table `mysql`.`BASE TABLE`;show create table `mysql`.`gtid_executed`;show create table `mysql`.`BASE TABLE`;show create table `mysql`.`help_category`;show create table `mysql`.`BASE TABLE`;show create table `mysql`.`help_keyword`;show create table `mysql`.`BASE TABLE`;show create table `mysql`.`help_relation`;show create table `mysql`.`BASE TABLE`;show create table `mysql`.`help_topic`;show create table `mysql`.`BASE TABLE`;show create table `mysql`.`innodb_index_stats`;show create table `mysql`.`BASE TABLE`;show create table `mysql`.`innodb_table_stats`;show create table `mysql`.`BASE TABLE`;show create table `mysql`.`ndb_binlog_index`;show create table `mysql`.`BASE TABLE`;show create table `mysql`.`plugin`;show create table `mysql`.`BASE TABLE`;show create table `mysql`.`proc`;show create table `mysql`.`BASE TABLE`;show create table `mysql`.`procs_priv`;show create table `mysql`.`BASE TABLE`;show create table `mysql`.`proxies_priv`;show create table `mysql`.`BASE TABLE`;show create table `mysql`.`server_cost`;show create table `mysql`.`BASE TABLE`;show create table `mysql`.`servers`;show create table `mysql`.`BASE TABLE`;show create table `mysql`.`slave_master_info`;show create table `mysql`.`BASE TABLE`;show create table `mysql`.`slave_relay_log_info`;show create table `mysql`.`BASE TABLE`;show create table `mysql`.`slave_worker_info`;show create table `mysql`.`BASE TABLE`;show create table `mysql`.`slow_log`;show create table `mysql`.`BASE TABLE`;show create table `mysql`.`tables_priv`;show create table `mysql`.`BASE TABLE`;show create table `mysql`.`time_zone`;show create table `mysql`.`BASE TABLE`;show create table `mysql`.`time_zone_leap_second`;show create table `mysql`.`BASE TABLE`;show create table `mysql`.`time_zone_name`;show create table `mysql`.`BASE TABLE`;show create table `mysql`.`time_zone_transition`;show create table `mysql`.`BASE TABLE`;show create table `mysql`.`time_zone_transition_type`;show create table `mysql`.`BASE TABLE`;show create table `mysql`.`user`;show create table `mysql`.`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(Thread.java:748)
mysql
.BASE TABLE
demo_ds_1
.BASE TABLE
出现这样的情况,是不是因为用户的数据里面不一致造成的呢?
都一样是BASE TABLE, 前面只是数据库的名字,每个人肯定起的名字不一样
#4219 (comment) 当时我也发现了,我就是通过这个日期发现官方重新上传了一次包。 我当时是把代码拉下来,然后从1.1.6的tag创建一个本地分支,mvn package,把打包出来的canal.parser.jar替换掉,就换了一个jar包
我本地打包还会有这样的错
都一样是BASE TABLE, 前面只是数据库的名字,每个人肯定起的名字不一样
不像,我这个 mysql,我没有指定这个数据库
都一样是BASE TABLE, 前面只是数据库的名字,每个人肯定起的名字不一样
如果是数据库名称,是不是哪里可以配置什么?会不会是因为自动加载 admin 造成的?
@bwcx-jzy 你可以把这些语句拉到mysql的mysql库执行下,我帮你格式化了一下,主要还是这段有问题
SHOW CREATE TABLE `mysql`.`BASE TABLE`;
SHOW CREATE TABLE `mysql`.`columns_priv`;
SHOW CREATE TABLE `mysql`.`BASE TABLE`;
SHOW CREATE TABLE `mysql`.`db`;
SHOW CREATE TABLE `mysql`.`BASE TABLE`;
SHOW CREATE TABLE `mysql`.`engine_cost`;
SHOW CREATE TABLE `mysql`.`BASE TABLE`;
SHOW CREATE TABLE `mysql`.`event`;
SHOW CREATE TABLE `mysql`.`BASE TABLE`;
SHOW CREATE TABLE `mysql`.`func`;
SHOW CREATE TABLE `mysql`.`BASE TABLE`;
SHOW CREATE TABLE `mysql`.`general_log`;
SHOW CREATE TABLE `mysql`.`BASE TABLE`;
SHOW CREATE TABLE `mysql`.`gtid_executed`;
SHOW CREATE TABLE `mysql`.`BASE TABLE`;
SHOW CREATE TABLE `mysql`.`help_category`;
SHOW CREATE TABLE `mysql`.`BASE TABLE`;
SHOW CREATE TABLE `mysql`.`help_keyword`;
SHOW CREATE TABLE `mysql`.`BASE TABLE`;
SHOW CREATE TABLE `mysql`.`help_relation`;
SHOW CREATE TABLE `mysql`.`BASE TABLE`;
SHOW CREATE TABLE `mysql`.`help_topic`;
SHOW CREATE TABLE `mysql`.`BASE TABLE`;
SHOW CREATE TABLE `mysql`.`innodb_index_stats`;
SHOW CREATE TABLE `mysql`.`BASE TABLE`;
SHOW CREATE TABLE `mysql`.`innodb_table_stats`;
SHOW CREATE TABLE `mysql`.`BASE TABLE`;
SHOW CREATE TABLE `mysql`.`ndb_binlog_index`;
SHOW CREATE TABLE `mysql`.`BASE TABLE`;
SHOW CREATE TABLE `mysql`.`plugin`;
SHOW CREATE TABLE `mysql`.`BASE TABLE`;
SHOW CREATE TABLE `mysql`.`proc`;
SHOW CREATE TABLE `mysql`.`BASE TABLE`;
SHOW CREATE TABLE `mysql`.`procs_priv`;
SHOW CREATE TABLE `mysql`.`BASE TABLE`;
SHOW CREATE TABLE `mysql`.`proxies_priv`;
SHOW CREATE TABLE `mysql`.`BASE TABLE`;
SHOW CREATE TABLE `mysql`.`server_cost`;
SHOW CREATE TABLE `mysql`.`BASE TABLE`;
SHOW CREATE TABLE `mysql`.`servers`;
SHOW CREATE TABLE `mysql`.`BASE TABLE`;
SHOW CREATE TABLE `mysql`.`slave_master_info`;
SHOW CREATE TABLE `mysql`.`BASE TABLE`;
SHOW CREATE TABLE `mysql`.`slave_relay_log_info`;
SHOW CREATE TABLE `mysql`.`BASE TABLE`;
SHOW CREATE TABLE `mysql`.`slave_worker_info`;
SHOW CREATE TABLE `mysql`.`BASE TABLE`;
SHOW CREATE TABLE `mysql`.`slow_log`;
SHOW CREATE TABLE `mysql`.`BASE TABLE`;
SHOW CREATE TABLE `mysql`.`tables_priv`;
SHOW CREATE TABLE `mysql`.`BASE TABLE`;
SHOW CREATE TABLE `mysql`.`time_zone`;
SHOW CREATE TABLE `mysql`.`BASE TABLE`;
SHOW CREATE TABLE `mysql`.`time_zone_leap_second`;
SHOW CREATE TABLE `mysql`.`BASE TABLE`;
SHOW CREATE TABLE `mysql`.`time_zone_name`;
SHOW CREATE TABLE `mysql`.`BASE TABLE`;
SHOW CREATE TABLE `mysql`.`time_zone_transition`;
SHOW CREATE TABLE `mysql`.`BASE TABLE`;
SHOW CREATE TABLE `mysql`.`time_zone_transition_type`;
SHOW CREATE TABLE `mysql`.`BASE TABLE`;
SHOW CREATE TABLE `mysql`.`user`;
SHOW CREATE TABLE `mysql`.`BASE TABLE`;
直接这样试试
可以在conf/example/instance.properties中
canal.instance.filter.black.regex=mysql\\.BASE.*
各位有遇到关键字报错的吗 转义也做了 好像无效 是不是因为打包的问题 复现了?
跟各位一样的问题。期初还以自己哪里配置错了,搞了半天才从数据库中发现有问题的SQL语句
哈哈 一样 这个BASE TABLE 是table value 需要过滤的 但是deploy包有问题 - - 导致这块过滤没生效
问个问题 我本地包package后 丢到 canal-deployer/lib 替换同名文件 启动之后日志什么的还是没有 这个有遇到么
都一样是BASE TABLE, 前面只是数据库的名字,每个人肯定起的名字不一样
如果是数据库名称,是不是哪里可以配置什么?会不会是因为自动加载 admin 造成的?
实际上这里是 show full tables from " + schema + "
where Table_type = 'BASE TABLE'查询到的两个字段
这里会有两个字段 一个表名 一个type->BASE TABLE
所以目前最好的方法 要么是替换jar包 要么是black.regex去过滤 + .*//.BASE TABLE
错误位置: com.alibaba.otter.canal.parse.inbound.mysql.tsdb.DatabaseTableMeta:211
fixed issue #4216 , support polardb-x show tables 753fad66 jianghang.loujh jianghang.loujh@alibaba-inc.com on 2022/6/10 at 13:36
同样docker image 就没问题
应该过滤掉所有SCHEMA名称下的BASE TABLE表名,修改文件[/home/admin/canal-server/conf/{your-db-schema-name}/instance.properties]中的下面设置:
canal.instance.filter.black.regex=.*\\.BASE TABLE.*
下面的写法只会过滤掉特定SCHEMA, new_energy的BASE TABLE表
canal.instance.filter.black.regex=new_energy\\.BASE.*
environment
Issue Description
在github下载地址 下载 下载后,发现源码包与字节码包的内容是不一至的,字节码包部署后,疯狂报错,说找不到BASE TABLE错误。反编译在对比源码包,发现不一至,字节码包的代码有bug.