com.alibaba.fastsql.sql.parser.ParserException: TODO. pos 831, line 14, column 15, token LITERAL_ALIAS "FK_AbpAuditLogActions_AbpAuditLogs_AuditLogId" at com.alibaba.fastsql.sql.dialect.mysql.parser.MySqlCreateTableParser.parseConstraint(MySqlCreateTableParser.java:1474) ~[fastsql-2.0.0_preview_973.jar:2.0.0_preview_973] at com.alibaba.fastsql.sql.dialect.mysql.parser.MySqlCreateTableParser.parseCreateTable(MySqlCreateTableParser.java:278) ~[fastsql-2.0.0_preview_973.jar:2.0.0_preview_973] at com.alibaba.fastsql.sql.dialect.mysql.parser.MySqlStatementParser.parseCreate(MySqlStatementParser.java:291) ~[fastsql-2.0.0_preview_973.jar:2.0.0_preview_973] at com.alibaba.fastsql.sql.parser.SQLStatementParser.parseStatementList(SQLStatementParser.java:231) ~[fastsql-2.0.0_preview_973.jar:2.0.0_preview_973] at com.alibaba.fastsql.sql.SQLUtils.parseStatements(SQLUtils.java:536) ~[fastsql-2.0.0_preview_973.jar:2.0.0_preview_973] at com.alibaba.fastsql.sql.repository.SchemaRepository.console(SchemaRepository.java:439) ~[fastsql-2.0.0_preview_973.jar:2.0.0_preview_973] at com.alibaba.otter.canal.parse.inbound.mysql.tsdb.MemoryTableMeta.apply(MemoryTableMeta.java:84) ~[canal.parse-1.1.5-SNAPSHOT.jar:na] at com.alibaba.otter.canal.parse.inbound.mysql.tsdb.DatabaseTableMeta.apply(DatabaseTableMeta.java:156) [canal.parse-1.1.5-SNAPSHOT.jar:na] at com.alibaba.otter.canal.parse.inbound.mysql.dbsync.TableMetaCache.getTableMeta(TableMetaCache.java:183) [canal.parse-1.1.5-SNAPSHOT.jar:na] at com.alibaba.otter.canal.parse.inbound.mysql.dbsync.LogEventConvert.getTableMeta(LogEventConvert.java:957) [canal.parse-1.1.5-SNAPSHOT.jar:na] at com.alibaba.otter.canal.parse.inbound.mysql.dbsync.LogEventConvert.parseRowsEventForTableMeta(LogEventConvert.java:481) [canal.parse-1.1.5-SNAPSHOT.jar:na] at com.alibaba.otter.canal.parse.inbound.mysql.MysqlMultiStageCoprocessor$SimpleParserStage.onEvent(MysqlMultiStageCoprocessor.java:274) [canal.parse-1.1.5-SNAPSHOT.jar:na] at com.alibaba.otter.canal.parse.inbound.mysql.MysqlMultiStageCoprocessor$SimpleParserStage.onEvent(MysqlMultiStageCoprocessor.java:246) [canal.parse-1.1.5-SNAPSHOT.jar:na] at com.lmax.disruptor.BatchEventProcessor.processEvents(BatchEventProcessor.java:168) [disruptor-3.4.2.jar:na] at com.lmax.disruptor.BatchEventProcessor.run(BatchEventProcessor.java:125) [disruptor-3.4.2.jar:na] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_242-debug] at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_242-debug] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_242-debug] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_242-debug] at java.lang.Thread.run(Thread.java:748) [na:1.8.0_242-debug] 2020-08-26 10:05:22.000 [destination = example , address = /192.168.2.71:3306 , EventParser] ERROR c.a.o.c.p.inbound.mysql.rds.RdsBinlogEventParserProxy - dump address /192.168.2.71:3306 has an error, retrying. caused by com.alibaba.otter.canal.parse.exception.CanalParseException: com.alibaba.otter.canal.parse.exception.CanalParseException: not found [Tect_CC.AbpAuditLogActions] in db , pls check! Caused by: com.alibaba.otter.canal.parse.exception.CanalParseException: not found [Tect_CC.AbpAuditLogActions] in db , pls check! 2020-08-26 10:05:22.004 [destination = example , address = /192.168.2.71:3306 , EventParser] ERROR com.alibaba.otter.canal.common.alarm.LogAlarmHandler - destination:example[com.alibaba.otter.canal.parse.exception.CanalParseException: com.alibaba.otter.canal.parse.exception.CanalParseException: not found [Tect_CC.AbpAuditLogActions] in db , pls check! Caused by: com.alibaba.otter.canal.parse.exception.CanalParseException: not found [Tect_CC.AbpAuditLogActions] in db , pls check!
原提问者Github用户 NiuziyuanPy
这个错误信息是由于 Otter 在解析 MySQL 表定义时遇到了一个 TODO 注释,它无法解析该注释,因此导致了异常。这通常是由于 MySQL 版本升级或者表定义更改引起的。
要解决这个问题,你可以尝试升级 Otter 版本,或者手动修改表定义以删除 TODO 注释。另外,你可以检查 MySQL 表定义是否符合 MySQL 的语法规范,以确保 Otter 能够正确解析表定义。
如果你无法升级 Otter 版本或修改表定义,你可以考虑使用其他的数据同步工具,例如 DataX 或者 Flink。这些工具都支持 MySQL 数据库的同步,且具有更好的兼容性和稳定性。
根据报错信息,可以看出是在执行MySQL表创建语句时出现了问题,可能是由于表中的外键约束引起的。
建议检查一下创建表的语句,看看是否存在语法错误或约束冲突等问题。同时,也需要检查一下数据库中是否存在名为"Tect_CC.AbpAuditLogActions"的表,以及该表是否在配置文件中正确地指定了位置。
另外,还需要检查一下网络连接是否正常,以及数据库是否正常运行。
问题可能是由于MySQL解析器无法正确处理某个约束条件导致的。具体来说,当Otter尝试同步数据时,MySQL解析器可能会遇到一个无法识别的约束条件,从而导致同步失败并报告上述错误。
为了解决这个问题,您可以尝试以下方法:
检查表约束条件:请检查同步失败的表的约束条件,特别是外键约束条件。确保约束条件的语法正确,并且它们可以正确地解析为MySQL语句。
检查MySQL版本:请检查您使用的MySQL版本是否与Otter兼容。如果版本不兼容,可能会导致解析错误或其他问题。尝试更新MySQL版本或Otter版本以解决问题。
检查Otter配置:请检查您的Otter配置,确保它已正确设置,并且可以正确处理MySQL解析器解析的约束条件。您可以尝试重新配置Otter,以确保它已正确设置。
检查MySQL解析器:请检查您的MySQL解析器,确保它已正确安装,并且可以正确处理约束条件。如果您使用的是自定义的MySQL解析器,请确保它已正确设置,并且可以正确解析约束条件。
根据日志,可以看出同步出现了问题,原因是找不到数据库 Tect_CC.AbpAuditLogActions,需要检查一下该数据库是否存在。如果数据库不存在,则需要创建该数据库并重新配置 canal.instance.defaultDatabaseName,如果数据库存在,则需要检查该数据库中是否存在表 Tect_CC.AbpAuditLogActions。同时,也需要检查一下 MySQL 主库和从库之间的网络连接是否正常,以及配置文件中的地址、用户名、密码等是否正确。如果以上都没有问题,可以尝试重启 Canal 服务。如果还是无法解决问题,可以查看更详细的日志信息,以便更好地定位和解决问题。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。