我是陈皮,一个在互联网 Coding 的 ITer,微信搜索「 陈皮的JavaLib」第一时间阅读最新文章,回复【 资料】,即可获得我精心整理的技术资料,电子书籍,一线大厂面试资料和优秀简历模板。
问题现象
Springboot 项目使用 mybatis-generator
数据库逆向生成工具时,出现如下错误。
java.sql.SQLException: 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 的版本对应关系。
项目中引入更高版本的驱动
<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