集成oceanbase 2.2.77 版本,mysql-connector-java.jar 8.0.29出现诡异的问题

【 使用环境 】
测试环境
【 OB or 其他组件 】
OB mysql 模式
【 使用版本 】
2.2.77
【问题描述】
日志异常和源码行数不一致
我在定位SQLException: null 的异常中,想跟踪源码查找具体引发异常的点,结果发现日志显示的异常和源码中的行数对不上(实话,头回遇见,没有思路。目前还是一头雾水…)

项目是springboot项目,版本2.0.7.RELEASE
连接池用的com.zaxxer.hikari.HikariDataSource
驱动 com.mysql.cj.jdbc.Driver

mysql-connector-java.jar:8.0.29

截图如下:



期待大神能帮我解惑,万分感谢!!!

看下本地maven里面是不是有多个版本,删除一下本地maven依赖中的mysql-connector-java,重新拉一下

驱动版本太高了,ob的2.2,怎么可能支持那么高版本的驱动呢 5.1.47试试

之前就有人反馈过这个异常,降低驱动版本就可以,官方文档写的推荐驱动就是5.1.47

在 OceanBase 数据库 MySQL 模式下,用户可以直接使用 MySQL 官方提供的 Connector 来使用 OceanBase 数据库(暂不支持 8.0 的驱动),在 OceanBase 数据库 Oracle 模式下,需要使用 OceanBase 自研的数据库驱动。下面介绍 OceanBase 数据库提供的几种驱动。

https://www.oceanbase.com/docs/common-oceanbase-database-cn-10000000001702174

感谢!我确定本地maven中很干净,只有8.0.19 版本的一个依赖。

是的,我当时从官网中注意到ob兼容mysql5.6, 所以我将驱动版本降低到5.1.46,待验证

官网mysql 兼容性介绍

可是该问题时偶发性的,平均2-3次sql写入会出现一次异常,查询目前没有发现该问题。

下面是我的业务代码发生异常的点:

以及dao层实现

我记得官方推荐mysql驱动草本是5.1.47,不过我们测试过5.1.46也没问题

2277 不支持 mysql 8, 黑屏使用 mysql-client 8 登录不了

加上参数应该就可以,因为mysql client 8的默认密码策略变了。必须在mysql -h -u -p 后边再加上
--default-auth=mysql_native_password
否则会出现如下提示的密码认证错误 ```

Access denied for user

MySQL的客户端从8.0的版本开始,将原先客户端的默认的密码认证插件由mysql_native_password改为了caching_sha2_password,两种密码认证方式不同。而ob当前只支持mysql_native_password的密码认证插件,所以就导致了连接时密码认证失败了。而关于密码认证插件的变更,更为详细的内容,可以参考MySQL的官方文档

1 个赞

我说错了,只有8.0.29 版本的一个依赖

正解 :+1: