tried to access field com.mysql.cj.CharsetMapping.COLLATION_INDEX_TO_COLLATION_NAME from class io.de

使用flinkCDC的时候,连接mysql数据库一直重试报这个错误
因为我使用的mysql8版本的数据库所以出了问题

tried to access field com.mysql.cj.CharsetMapping.COLLATION_INDEX_TO_COLLATION_NAME from class io.debezium.connector.mysql.antlr.MySqlAntlrDdlParser

找了论坛发现是和mysql-connector-java版本有关系
在这里插入图片描述
需要将版本降低到8.0.26之前
所以,最后在pom中补充依赖

<dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.25</version>
        </dependency>
### Tez 引擎访问 `com.google.protobuf.AbstractMessage.memoizedSize` 字段时出现错误的原因 Tez引擎尝试访问`com.google.protobuf.AbstractMessage.memoizedSize`字段时报错通常是因为版本兼容性问题。具体来说,不同版本的Protobuf库可能具有不同的内部实现细节,在某些情况下,这些差异可能导致运行时异常。 #### 版本冲突分析 当应用程序依赖多个组件时,如果各个组件使用的Protobuf版本不一致,则可能会引发此类问题。例如,Tez引擎及其所集成的数据处理框架(如Hive)可能各自携带了不同版本的Protobuf库[^1]。 #### 解决方案建议 ##### 1. 统一 Protobuf 库版本 确保整个项目环境中只存在一个统一版本的Protobuf jar包。可以通过以下方式来管理: - **排除重复依赖**:检查项目的构建文件(如Maven或Gradle),移除不必要的Protobuf依赖项。 - **指定特定版本**:强制所有模块使用相同版本的Protobuf库。对于基于Apache Maven的项目,可以在pom.xml中定义dependencyManagement部分以锁定所需版本;而对于采用Gradle作为构建工具的情况,则应在build.gradle里相应位置声明该约束条件。 ```xml <dependencyManagement> <dependencies> <!-- 明确指明protobuf-java的具体版本 --> <dependency> <groupId>com.google.protobuf</groupId> <artifactId>protobuf-java</artifactId> <version>3.17.3</version> </dependency> </dependencies> </dependencyManagement> ``` ##### 2. 更新相关软件栈至最新稳定版 考虑到旧版本可能存在已知缺陷或者不再支持新特性,适时升级到较新的发布版本有助于减少潜在风险并获得更好的性能表现。特别是针对那些频繁更新迭代的技术栈成员而言更是如此。 ##### 3. 修改源码绕过此问题 (谨慎操作) 如果不希望更改现有环境中的任何第三方库版本,也可以考虑通过修改受影响的应用程序代码的方式来规避这个问题。不过这种做法往往伴随着较高的维护成本和技术债务积累的风险,因此仅推荐在其他方法不可行的情况下才采取这一措施。 ```java // 假设原始调用如下所示会触发错误 message.getSerializedSize(); // 可能改为手动计算序列化大小或其他替代逻辑 int size = message.toByteString().size(); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值