-
Notifications
You must be signed in to change notification settings - Fork 7.7k
Closed
Description
environment
- canal version 1.1.5
- mysql version Percona-Server-5.7.28, ENGINE = TokuDB
Issue Description
mysql执行增加分区的操作,一次性增加多个分区导致canal解析sql语句错误,但是逐条创建分区是正常的。
Steps to reproduce
查询了报错,应该是druid的问题
Expected behaviour
期望官方修复druid问题并引用进canal。
If there is an exception, please attach the exception trace:
Just put your stack trace here!

下面是canal的报错:
2021-11-02 19:30:43.759 [destination = online_mysql_XXXXX_progress , address = /172.16.2.109:3306 , EventParser] WARN c.a.o.c.p.inbound.mysql.rds.RdsBinlogEventParserProxy - ---> begin to find start position, it will be long time for reset or first position
2021-11-02 19:30:43.765 [destination = online_mysql_XXXXX_progress , address = /172.16.2.109:3306 , EventParser] WARN c.a.otter.canal.parse.inbound.mysql.tsdb.MemoryTableMeta - parse faield : alter table daily_progress add partition ( partition p20220201 VALUES LESS THAN (738552) ENGINE = TokuDB, PARTITION pmax VALUES LESS THAN MAXVALUE ENGINE = TokuDB)
com.alibaba.druid.sql.parser.ParserException: syntax error, error in :'ENGINE = TokuDB, PARTITION pmax VALUES ', expect ), actual ,, pos 105, line 1, column 105, token ,
at com.alibaba.druid.sql.parser.SQLParser.printError(SQLParser.java:576) ~[druid-1.2.6.jar:1.2.6]
at com.alibaba.druid.sql.parser.SQLParser.accept(SQLParser.java:584) ~[druid-1.2.6.jar:1.2.6]
at com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser.parseAlterSpecification(MySqlStatementParser.java:6110) ~[druid-1.2.6.jar:1.2.6]
at com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser.parseAlterTable(MySqlStatementParser.java:6810) ~[druid-1.2.6.jar:1.2.6]
at com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser.parseAlter(MySqlStatementParser.java:5166) ~[druid-1.2.6.jar:1.2.6]
at com.alibaba.druid.sql.parser.SQLStatementParser.parseStatementList(SQLStatementParser.java:304) ~[druid-1.2.6.jar:1.2.6]
at com.alibaba.druid.sql.SQLUtils.parseStatements(SQLUtils.java:565) ~[druid-1.2.6.jar:1.2.6]
at com.alibaba.druid.sql.SQLUtils.parseStatements(SQLUtils.java:587) ~[druid-1.2.6.jar:1.2.6]
at com.alibaba.druid.sql.repository.SchemaRepository.console(SchemaRepository.java:445) ~[druid-1.2.6.jar:1.2.6]
at com.alibaba.otter.canal.parse.inbound.mysql.tsdb.MemoryTableMeta.apply(MemoryTableMeta.java:84) ~[canal.parse-1.1.5.jar:na]
at com.alibaba.otter.canal.parse.inbound.mysql.tsdb.DatabaseTableMeta.applyHistoryOnMemory(DatabaseTableMeta.java:454) [canal.parse-1.1.5.jar:na]
at com.alibaba.otter.canal.parse.inbound.mysql.tsdb.DatabaseTableMeta.rollback(DatabaseTableMeta.java:167) [canal.parse-1.1.5.jar:na]
at com.alibaba.otter.canal.parse.inbound.mysql.AbstractMysqlEventParser.processTableMeta(AbstractMysqlEventParser.java:142) [canal.parse-1.1.5.jar:na]
at com.alibaba.otter.canal.parse.inbound.AbstractEventParser$1.run(AbstractEventParser.java:197) [canal.parse-1.1.5.jar:na]
at java.lang.Thread.run(Thread.java:748) [na:1.8.0_201]
2021-11-02 19:30:43.765 [destination = online_mysql_XXXXX_progress , address = /172.16.2.109:3306 , EventParser] WARN c.a.o.c.p.inbound.mysql.rds.RdsBinlogEventParserProxy - ---> find start position successfully, EntryPosition[included=false,journalName=mysql-bin.002668,position=713513730,serverId=1182953,gtid=3aby17t7a-11ef-11eb-885d-e4434ba4a6a8:1,5695430b-6a7d-11ea-9h52-e4434bb61830:1-10609618787,3a720ff1-74ee-11eb-92bb-246e96247198:1-2,f5d64471-6e5f-11e6-a298-246e96247198:1-1670230942,4b9e5eb0-6e61-11e6-a2a0-246e9624736c:1-125,timestamp=1635760819000] cost : 6ms , the next step is binlog dump