Java/DataGrip连接MySQL报错问题集锦

概述

无论是通过JDBC程序,还是DataGrip客户端连接MySQL(很简单的配置用户名、密码、URL等信息),但,总是会遇到各种奇奇怪怪的问题。本文故此而生。

在使用DataGrip时,如果遇到奇奇怪怪的连接失败问题,不妨试试清除缓存重启,尤其是在连接若干个数据源,反复切换驱动版本
在这里插入图片描述

注:本文使用的DataGrip版本为:
DataGrip 2021.1.2
Build #DB-211.7442.38, built on May 31, 2021

问题

Java连接MySQL报错ArrayIndexOutOfBoundsException

JDBC程序报错信息如下:

Caused by: java.lang.ArrayIndexOutOfBoundsException: 24
	at com.mysql.cj.mysqla.io.Buffer.readLong(Buffer.java:284) ~[mysql-connector-java-6.0.2.jar:6.0.2]

后面的具体信息就省略掉;
经过分析,查找资料,定位原因是我本地安装的MySQL的版本是5.6,然后我在 pom.xml 文件里面配置 mysql-connector-java 的版本,如上所示 6.0.2。结果就报这种错误信息。如果把思维惯性放在数组越界,可能怎么都解决不了问题吧。

SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate).

DataGrip版本号为2021.1.2,待连接的数据源版本为8.0.18,使用的驱动版本为5.1.42,报错信息如下:

[2022-03-07 16:09:05] javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate).

解决方案:

  1. 升级JDBC驱动版本到8.0+,如8.0.20
  2. 添加数据源级别的配置。

参考解决方案DataGrip-upgraded-to-2021-1-2-error-occurs-when-connecting-to-database-SSLHandshakeException

CLIENT_PLUGIN_AUTH is required

如图,DataGrip使用8.0.20版本的驱动。
在这里插入图片描述
连接一个数据源报错:

[08001] CLIENT_PLUGIN_AUTH is required
com.mysql.cj.exceptions.UnableToConnectException: CLIENT_PLUGIN_AUTH is required.

降低MySQL驱动版本,比如降到5.1.42版本可以连接成功。因为被连接的数据源版本太低:

DBMS: MySQL (ver. 5.0.95)

ClassCastException: class java.math.BigInteger cannot be cast to class java.lang.Long

使用的DataGrip版本号为2021.1.2,报错信息如下:

[S1009] java.lang.ClassCastException: class java.math.BigInteger cannot be cast to class java.lang.Long (java.math.BigInteger and java.lang.Long are in module java.base of loader 'bootstrap')
class java.math.BigInteger cannot be cast to class java.lang.Long (java.math.BigInteger and java.lang.Long are in module java.base of loader 'bootstrap').

问题根源:使用的mysql-connector-java.jar驱动jar包过于老旧。

我使用的版本号为mysql-connector-java-5.1.24.jar,换成mysql-connector-java-5.1.46.jar问题解决。当然直接使用mysql-connector-java-8.0.20.jar8.*版本,也能解决问题。

Unknown system variable ‘query_cache_size’

使用DataGrip 2021.1.2 + mysql-connector-java-5.1.42.jar驱动,连接MySQL数据源失败,报错信息:[HY000][1193] Unknown system variable 'query_cache_size'.

因为待连接的数据源的版本较高:

DBMS: MySQL (ver. 8.0.22-13)
Case sensitivity: plain=lower, delimited=lower
Driver: MySQL Connector/J (ver. mysql-connector-java-8.0.20 (Revision: afc0a13cd3c5a0bf57eaa809ee0ee6df1fd5ac9b), JDBC4.2)

而驱动版本太低。

解决方案:
将驱动升级到版本8,比如mysql-connector-java-8.0.20.jar,即可。

参考

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

johnny233

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值