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

概述

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

在使用DataGrip时,如果遇到奇奇怪怪的连接失败问题,不妨试试清除缓存重启,尤其是在连接若干个数据源,反复切换驱动版本
Java/DataGrip连接MySQL报错问题集锦_第1张图片

注:本文使用的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版本的驱动。
Java/DataGrip连接MySQL报错问题集锦_第2张图片
连接一个数据源报错:

[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,即可。

参考

你可能感兴趣的:(Java,数据库,mysql)