Mysql 8 驱动问题:报错Unknown system variable 'query_cache_size'

版权声明:本文为博主九师兄(QQ群:spark源代码 198279782 欢迎来探讨技术)原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_21383435/article/details/91351512

背景

要连接mysql 8版本的MYSQL,使用的是

<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.47</version>
</dependency>

报错如下

02-Jun-2018 12:46:56.247 警告 [com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2] com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@14dcb832 -- Acquisition Attempt Failed!!! Clearing pending acquires. While trying to acquire a needed new resource, we failed to succeed more than the maximum number of allowed acquisition attempts (2). Last acquisition attempt exception: 
 java.sql.SQLException: Unknown system variable 'query_cache_size'
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:959)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3870)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3806)

原因是:
mysql-connecter-java的版本过低,很显然是数据库驱动程序与数据库版本不对应

根据官方的说法是 :

The query cache is deprecated as of MySQL 5.7.20, and is removed in MySQL 8.0. Deprecation 
includes query_cache_size.

意思是query cache在MySQL5.7.20就已经过时了,而在MySQL8.0之后就已经被移除了。

第一次增加版本

<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>6.0.4</version>
</dependency>


还是报错如上,最后升到8才可以

<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.11</version>
</dependency>

还遇到过驱动问题
使用新的驱动报错com.mysql.cj.jdbc.Driver无法连接数据库,使用旧的就可以com.mysql.jdbc.Driver,查看源码发现

public class Driver extends com.mysql.cj.jdbc.Driver {
    public Driver() throws SQLException {
    }

    static {
        System.err.println("Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.");
    }
}

猜你喜欢

转载自blog.csdn.net/qq_21383435/article/details/91351512