"Flink CDC这个问题怎么解决?
Caused by: java.lang.NoSuchMethodError: com.mysql.cj.CharsetMapping.getStaticCollationNameForCollationIndex(Ljava/lang/Integer;)Ljava/lang/String;
at io.debezium.connector.mysql.antlr.MySqlAntlrDdlParser.extractCharset(MySqlAntlrDdlParser.java:405)
at io.debezium.connector.mysql.antlr.listener.ColumnDefinitionParserListener.resolveColumnDataType(ColumnDefinitionParserListener.java:158)
at io.debezium.connector.mysql.antlr.listener.ColumnDefinitionParserListener.enterColumnDefinition(ColumnDefinitionParserListener.java:75)
at io.debezium.ddl.parser.mysql.generated.MySqlParser$ColumnDefinitionContext.enterRule(MySqlParser.java:8617)
at io.debezium.antlr.ProxyParseTreeListenerUtil.delegateEnterRule(ProxyParseTreeListenerUtil.java:46)
at io.debezium.connector.mysql.antlr.listener.MySqlAntlrDdlParserListener.enterEveryRule(MySqlAntlrDdlParserListener.java:89)
at org.antlr.v4.runtime.tree.ParseTreeWalker.enterRule(ParseTreeWalker.java:41)
at org.antlr.v4.runtime.tree.ParseTreeWalker.walk(ParseTreeWalker.java:25)
at org.antlr.v4.runtime.tree.ParseTreeWalker.walk(ParseTreeWalker.java:28)
at org.antlr.v4.runtime.tree.ParseTreeWalker.walk(ParseTreeWalker.java:28)
at org.antlr.v4.runtime.tree.ParseTreeWalker.walk(ParseTreeWalker.java:28)
at org.antlr.v4.runtime.tree.ParseTreeWalker.walk(ParseTreeWalker.java:28)
at org.antlr.v4.runtime.tree.ParseTreeWalker.walk(ParseTreeWalker.java:28)
at org.antlr.v4.runtime.tree.ParseTreeWalker.walk(ParseTreeWalker.java:28)
at org.antlr.v4.runtime.tree.ParseTreeWalker.walk(ParseTreeWalker.java:28)
at io.debezium.antlr.AntlrDdlParser.parse(AntlrDdlParser.java:87)
at io.debezium.connector.mysql.MySqlDatabaseSchema.parseDdl(MySqlDatabaseSchema.java:224)
at io.debezium.connector.mysql.MySqlDatabaseSchema.parseSnapshotDdl(MySqlDatabaseSchema.java:204)
at com.ververica.cdc.connectors.mysql.schema.MySqlSchema.parseSchemaByDdl(MySqlSchema.java:124)
at com.ververica.cdc.connectors.mysql.schema.MySqlSchema.lambda$buildSchemaByShowCreateTable$0(MySqlSchema.java:107)
at io.debezium.jdbc.JdbcConnection.query(JdbcConnection.java:555)
at io.debezium.jdbc.JdbcConnection.query(JdbcConnection.java:496)
at com.ververica.cdc.connectors.mysql.schema.MySqlSchema.buildSchemaByShowCreateTable(MySqlSchema.java:102)
at com.ververica.cdc.connectors.mysql.schema.MySqlSchema.buildTableSchema(MySqlSchema.java:80)
at com.ververica.cdc.connectors.mysql.schema.MySqlSchema.getTableSchema(MySqlSchema.java:66)
at com.ververica.cdc.connectors.mysql.source.assigners.MySqlChunkSplitter.analyzeTable(MySqlChunkSplitter.java:150)
at com.ververica.cdc.connectors.mysql.source.assigners.MySqlChunkSplitter.splitChunks(MySqlChunkSplitter.java:119)
at com.ververica.cdc.connectors.mysql.source.assigners.MySqlSnapshotSplitAssigner.splitTable(MySqlSnapshotSplitAssigner.java:294)
at com.ververica.cdc.connectors.mysql.source.assigners.MySqlSnapshotSplitAssigner.splitChunksForRemainingTables(MySqlSnapshotSplitAssigner.java:557)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
... 3 more"
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
这个报错表明Flink CDC使用的MySQL驱动与Debezium不兼容导致的。
解决方法:
校验Flink CDC和Debezium版本是否匹配。如果不匹配需要升级到兼容版本。
尝试降级MySQL驱动到低版本,如8.0.27。高版本驱动可能兼容性不佳。
设置Flink CDC配置项"debezium.mysql.versions"指定驱动版本,强制匹配驱动。
使用相同版本的MySQL驱动库排查,升级后可能API变更导致问题。
如果还失败,可以降级Flink和Debezium核心版本进行验证。
一般来说,应该保持Flink CDC与Debezium和MySQL驱动的版本均一致,以免兼容问题。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。