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 服务。如果还是无法解决问题,可以查看更详细的日志信息,以便更好地定位和解决问题。