JDBC 连接 MySQL 报错 Unknown system variable 'query_cache_size'

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

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

解决办法

如 mybatis 使用 mysql-5.1.14 的驱动程序,而 mybatis 配置的数据源连接的是 mysql-8.0.11 ,修改 pom 文件即可,如下:

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

根据官方的说法是 :

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 之后就已经被移除了。

我改成 8.0.11 就可以了。

下表从官网总结了可用的 Connector / JDBC 版本,以及 JDBC 驱动程序类型的详细信息,支持的 JDBC API 版本,支持的 MySQL 服务器版本,支持的 JRE,构建所需的 JDK 以及每个连接器的支持状态/ JDBC 版本,供参考使用:

English:

img

Chinese:

img