[alibaba/canal]运行时生成建表语句报错解析,里面有MySQL关键字

2024-07-22 596 views
7
environment centos8
  • canal version deployer-1.17
  • mysql version 8.0.29

解析生成的建表语句报错,排查发现,表中有字段名字是index,生成的建表语句没有把index用`包起来。

希望得到的解决方案:把这个BUG修复。时间优先的话,有没有配置可以把这个表的解析跳过,业务用不上它。

com.alibaba.druid.sql.parser.ParserException: illegal name, pos 5131, line 84, column 25, token NULL at com.alibaba.druid.sql.parser.SQLExprParser.name(SQLExprParser.java:2370) at com.alibaba.druid.sql.parser.SQLExprParser.parseIndex(SQLExprParser.java:5461) at com.alibaba.druid.sql.dialect.mysql.parser.MySqlCreateTableParser.parseCreateTable(MySqlCreateTableParser.java:379) at com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser.parseCreate(MySqlStatementParser.java:296) at com.alibaba.druid.sql.parser.SQLStatementParser.parseStatementList(SQLStatementParser.java:245) at com.alibaba.druid.sql.SQLUtils.parseStatements(SQLUtils.java:599) at com.alibaba.druid.sql.repository.SchemaRepository.console(SchemaRepository.java:468) at com.alibaba.otter.canal.parse.inbound.mysql.tsdb.MemoryTableMeta.apply(MemoryTableMeta.java:85) at com.alibaba.otter.canal.parse.inbound.mysql.tsdb.DatabaseTableMeta.buildMemFromSnapshot(DatabaseTableMeta.java:423) at com.alibaba.otter.canal.parse.inbound.mysql.tsdb.DatabaseTableMeta.rollback(DatabaseTableMeta.java:166) at com.alibaba.otter.canal.parse.inbound.mysql.AbstractMysqlEventParser.processTableMeta(AbstractMysqlEventParser.java:145) at com.alibaba.otter.canal.parse.inbound.AbstractEventParser$1.run(AbstractEventParser.java:192) at java.lang.Thread.run(Thread.java:748) 2023-11-03 17:55:04.888 [destination = example , address = /127.0.0.1:3306 , EventParser] WARN c.a.o.c.p.inbound.mysql.rds.RdsBinlogEventParserProxy - ---> find start position successfully, EntryPosition[included=false,journalName=mysql-bin.000001,position=270377752,s

回答

5

完整的建表语句发一下

4

同样的问题,提示关键字是 CONDITION

8

现在有什么办法可以临时解决下吗

2

我也遇到了这个问题

5

直接把position位点改为最新的 可以临时解决下

5

估计是不太行,我发现这个问题的时候,就是改到一个比较新的position。中间只差几分钟的启动时间。