我是陈皮,一个在互联网 Coding 的 ITer,微信搜索「陈皮的JavaLib」第一时间阅读最新文章,回复【资料】,即可获得我精心整理的技术资料,电子书籍,一线大厂面试资料和优秀简历模板。


问题现象


Springboot 项目使用 mybatis-generator 数据库逆向生成工具时,出现如下错误。

java.sql.SQLException: Unknown system variable 'query_cache_size'

JDBC 连接 MySQL 报错 Unknown system variable ‘query_cache_size‘_数据库


项目使用的开发环境:

  • 数据库版本:8.0.20
  • 项目使用的 JDBC 驱动 mysql-connector-java 的版本是 5.1.41

解决办法


MySQL 官网给出了如下说法:

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 在 MySQL 5.7.20 已经过时了,并且在 MySQL 8.0 版本中被移除了。所以应该是数据库驱动程序与数据库版本不一致导致的,需要提高驱动程序版本。


下表总结了 mysql-connector-java 与 JDBC、MySQL、JRE、JDK 的版本对应关系。


JDBC 连接 MySQL 报错 Unknown system variable ‘query_cache_size‘_数据库_02


项目中引入更高版本的驱动

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.11</version>
</dependency>

修改连接配置信息

spring:
  datasource:
    # com.mysql.jdbc.Driver 替换为 com.mysql.cj.jdbc.Driver
    driver-class-name: com.mysql.cj.jdbc.Driver 
    url: jdbc:mysql://localhost:3306/chenpi?useSSL=false&useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=UTC

或者引入 5.1.49 版本的也是可以的,这样不用修改连接配置信息:

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.49</version>
</dependency>
spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/chenpi?&useUnicode=true&characterEncoding=UTF-8&autoReconnect=true