mysq flink cdc 2.3.0报错,有大佬知道什么原因吗?
org.apache.flink.util.FlinkRuntimeException: Chunk splitting has encountered exception at com.ververica.cdc.connectors.mysql.source.assigners.MySqlSnapshotSplitAssigner.checkSplitterErrors(MySqlSnapshotSplitAssigner.java:522) ~[flink-sql-connector-mysql-cdc-2.3.0.jar:2.3.0] at com.ververica.cdc.connectors.mysql.source.assigners.MySqlSnapshotSplitAssigner.getNext(MySqlSnapshotSplitAssigner.java:278) ~[flink-sql-connector-mysql-cdc-2.3.0.jar:2.3.0] at com.ververica.cdc.connectors.mysql.source.assigners.MySqlHybridSplitAssigner.getNext(MySqlHybridSplitAssigner.java:123) ~[flink-sql-connector-mysql-cdc-2.3.0.jar:2.3.0] at com.ververica.cdc.connectors.mysql.source.enumerator.MySqlSourceEnumerator.assignSplits(MySqlSourceEnumerator.java:201) ~[flink-sql-connector-mysql-cdc-2.3.0.jar:2.3.0] at com.ververica.cdc.connectors.mysql.source.enumerator.MySqlSourceEnumerator.handleSplitRequest(MySqlSourceEnumerator.java:117) ~[flink-sql-connector-mysql-cdc-2.3.0.jar:2.3.0] at org.apache.flink.runtime.source.coordinator.SourceCoordinator.lambda$handleEventFromOperator$1(SourceCoordinator.java:172) ~[flink-dist_2.12-1.14.0.jar:1.14.0] at org.apache.flink.runtime.source.coordinator.SourceCoordinator.lambda$runInEventLoop$8(SourceCoordinator.java:331) ~[flink-dist_2.12-1.14.0.jar:1.14.0] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_312] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_312] at java.lang.Thread.run(Thread.java:748) [?:1.8.0_312] 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:404) ~[flink-sql-connector-mysql-cdc-2.3.0.jar:2.3.0]
at io.debezium.connector.mysql.antlr.listener.ColumnDefinitionParserListener.resolveColumnDataType(ColumnDefinitionParserListener.java:155) ~[flink-sql-connector-mysql-cdc-2.3.0.jar:2.3.0] at io.debezium.connector.mysql.antlr.listener.ColumnDefinitionParserListener.enterColumnDefinition(ColumnDefinitionParserListener.java:82) ~[flink-sql-connector-mysql-cdc-2.3.0.jar:2.3.0] at io.debezium.ddl.parser.mysql.generated.MySqlParser$ColumnDefinitionContext.enterRule(MySqlParser.java:8316) ~[flink-sql-connector-mysql-cdc-2.3.0.jar:2.3.0] at io.debezium.antlr.ProxyParseTreeListenerUtil.delegateEnterRule(ProxyParseTreeListenerUtil.java:46) ~[flink-sql-connector-mysql-cdc-2.3.0.jar:2.3.0] at io.debezium.connector.mysql.antlr.listener.MySqlAntlrDdlParserListener.enterEveryRule(MySqlAntlrDdlParserListener.java:89) ~[flink-sql-connector-mysql-cdc-2.3.0.jar:2.3.0] at com.ververica.cdc.connectors.shaded.org.antlr.v4.runtime.tree.ParseTreeWalker.enterRule(ParseTreeWalker.java:41) ~[flink-sql-connector-mysql-cdc-2.3.0.jar:2.3.0] at com.ververica.cdc.connectors.shaded.org.antlr.v4.runtime.tree.ParseTreeWalker.walk(ParseTreeWalker.java:25) ~[flink-sql-connector-mysql-cdc-2.3.0.jar:2.3.0] at com.ververica.cdc.connectors.shaded.org.antlr.v4.runtime.tree.ParseTreeWalker.walk(ParseTreeWalker.java:28) ~[flink-sql-connector-mysql-cdc-2.3.0.jar:2.3.0] at com.ververica.cdc.connectors.shaded.org.antlr.v4.runtime.tree.ParseTreeWalker.walk(ParseTreeWalker.java:28) ~[flink-sql-connector-mysql-cdc-2.3.0.jar:2.3.0] at com.ververica.cdc.connectors.shaded.org.antlr.v4.runtime.tree.ParseTreeWalker.walk(ParseTreeWalker.java:28) ~[flink-sql-connector-mysql-cdc-2.3.0.jar:2.3.0]"
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
这个错误信息表明在使用 Flink SQL Connector for MySQL CDC 2.3.0 版本时,遇到了一个 NoSuchMethodError
异常。具体来说,问题发生在尝试调用 com.mysql.cj.CharsetMapping.getStaticCollationNameForCollationIndex(Integer)
方法时找不到该方法,这通常意味着存在类路径冲突或者不兼容的库版本问题。
可能的原因和解决办法如下:
库版本不兼容:你可能在项目中同时引入了不同版本的 MySQL 连接器或其他相关库,导致运行时加载到了错误版本的类。请检查你的项目依赖,确保所有与MySQL相关的库(特别是mysql-connector-java
或debezium-connector-mysql
)版本与Flink SQL Connector for MySQL CDC 2.3.0兼容。如果有必要,统一升级或降级到一个已知兼容的版本。
类路径污染:确认没有其他地方也引入了可能导致冲突的MySQL客户端库。有时候,即使直接依赖管理得当,间接依赖也可能引入冲突。可以使用Maven或Gradle的依赖分析工具来帮助识别并解决这类问题。
清理和重建:有时候,即使更改了依赖版本,旧的库文件仍可能存在于本地缓存或构建目录中。尝试执行mvn clean install
或gradlew clean build
来彻底清理并重新构建项目。
查看官方文档:确认Flink SQL Connector for MySQL CDC 2.3.0的官方文档是否有特定的依赖版本要求或已知问题。遵循官方推荐的依赖版本通常是最安全的做法。
社区支持:如果上述步骤不能解决问题,考虑在Apache Flink或Ververica CDC Connector的官方社区、GitHub issue页面或Stack Overflow上寻求帮助,提供详细的错误日志和你的项目依赖配置,以便获得更专业的帮助。您可以复制页面截图提供更多信息,我可以进一步帮您分析问题原因。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。