【问题标题】:java.sql.SQLException: Unknown system variable 'query_cache_size'java.sql.SQLException:未知的系统变量'query_cache_size'
【发布时间】:2025-12-10 06:35:01
【问题描述】:

我有一个使用 JDBC 运行的应用程序并从 MySQL 获取数据,但由于此错误,我无法构建它:

java.sql.SQLException: Unknown system variable 'query_cache_size'
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:964) ~[mysql-connector-java-5.1.41.jar:5.1.41]
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3973) ~[mysql-connector-java-5.1.41.jar:5.1.41]
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3909) ~[mysql-connector-java-5.1.41.jar:5.1.41]
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2527) ~[mysql-connector-java-5.1.41.jar:5.1.41]
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2680) ~[mysql-connector-java-5.1.41.jar:5.1.41]
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2497) ~[mysql-connector-java-5.1.41.jar:5.1.41]
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2455) ~[mysql-connector-java-5.1.41.jar:5.1.41]
    at com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1369) ~[mysql-connector-java-5.1.41.jar:5.1.41]
    at com.mysql.jdbc.ConnectionImpl.loadServerVariables(ConnectionImpl.java:3777) ~[mysql-connector-java-5.1.41.jar:5.1.41]
    at com.mysql.jdbc.ConnectionImpl.initializePropsFromServer(ConnectionImpl.java:3240) ~[mysql-connector-java-5.1.41.jar:5.1.41]
    at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2249) ~[mysql-connector-java-5.1.41.jar:5.1.41]
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2035) ~[mysql-connector-java-5.1.41.jar:5.1.41]
    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:790) ~[mysql-connector-java-5.1.41.jar:5.1.41]
    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47) ~[mysql-connector-java-5.1.41.jar:5.1.41]
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_131]

我这里有文件 application.properties

#specs.dir=/specs/
#
#################### Spring Boot Data Source Configuration ############
#spring.datasource.driver-class-name=com.mysql.jdbc.Driver
#spring.datasource.url=jdbc:mysql://localhost:3306/savingbooking?useSSL=false
#spring.datasource.username=root
#spring.datasource.password=ZAQ!2wsx
#spring.datasource.initialize=true
#spring.jpa.hibernate.ddl-auto=update
#spring.jpa.properties.hibernate.format_sql=true
#spring.jpa.show-sql=true
#spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLDialect

Mysql工作台是8.0版本

【问题讨论】:

  • 导致错误的代码在哪里?
  • MySQL Workbench 是 MySQL 的查询工具,Java 访问 MySQL 数据库时不涉及,因此与您的问题无关。
  • 看来这是一个已知的错误bugs.mysql.com/bug.php?id=87846 尝试将您的连接器jar mysql-connector-java 升级到5.1.43 或更高版本

标签: java mysql spring-boot jdbc


【解决方案1】:

query_cache_size 在 MySQL 8 中被删除。检查docs

它适用于 JDBC 驱动程序 5.1.44。

【讨论】:

  • 我正在使用 mysql-connector-java 版本 6.0.3,并在我的项目中添加 maven 依赖项。我仍然得到同样的错误
  • @steven35 我收到了$ sudo mysql_upgrade -u root Looking for 'mysql' as: mysql Looking for 'mysqlcheck' as: mysqlcheck Error: Failed while fetching Server version! Could be due to unauthorized access. FATAL ERROR: Upgrade failed 请帮忙
  • @DhavalBhoot 您可以使用任何以后的 SQL 连接器。我使用了 8.0.12 并且可以无缝运行。
  • 2018年10月的最新版本是8.0.13
  • 在 java spring boot 应用程序中,最新版本 mysql:mysql-connector-java:8.0.25 仍然出现相同的错误“未知系统变量 'query_cache_size'”。
【解决方案2】:

java.sql.SQLException:未知系统变量“query_cache_size”

在你项目的 pom 文件中,只需要更新依赖的版本即可。

例如,它是 6.0.2 的 mysql java 连接器,只需将其更新为最新的,例如 8.0.11

有效!!!!

【讨论】:

  • 将驱动程序版本更新到 5.1.44 为我解决了这个问题。我保留驱动程序版本 5,因为我仍然需要能够连接到某些服务器上的 mySQL v5,但现在可以连接到两者。
【解决方案3】:

我遇到了类似的问题。 我通过 在 mysql 依赖项中指定版本 解决了它

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.45</version>
    <scope>runtime</scope>
</dependency>

对我来说就像一个魅力。

【讨论】:

  • 我根据@steven35 对其进行了修复,并且成功了,但是感谢您的帮助!!!
【解决方案4】:

尝试使用 MySQL 8.0.3 从文档中可以看出,query_cache_size 在 MySQL8 上已被删除。 JetBrains 的家伙也遇到了同样的问题,似乎是通过将驱动程序更新到 MySQL JDBC driver v 5.1.44 版本来修复它。

【讨论】:

  • 将驱动程序版本更新到 5.1.44 为我解决了这个问题。谢谢!
【解决方案5】:

对于 mysql 8:

mysql-connector-java-8.0.17.jar (或以上) + db.driver=com.mysql.cj.jdbc.Driver 而不是 com.mysql.jdbc.Driver

【讨论】:

    【解决方案6】:

    我在这个问题上卡住了,花了整整一天,终于找到了解决方案。

    解决方案:

    1) 使用精确的 mysql-connector-java jar 或依赖项作为您的 mysql 版本。
    2) 如果你的 mysql 版本是 8 或 6+ 尝试使用这个“com.mysql.cj.jdbc.Driver”驱动类。

    【讨论】:

      【解决方案7】:

      如果您使用 MySql v8.0,那么您应该尝试使用

      修复此错误

      mysql-connector-java-5.1.9

      【讨论】:

        【解决方案8】:

        此异常与 pom.xml 依赖有关。 当我在 pox.xml 中使用以下依赖项时:

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

        显示异常:Caused by: java.sql.SQLException: Unknown system variable query_cache_size

        但是,当我使用以下依赖项时:

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

        它可以工作。你必须使用最新的依赖项

        【讨论】:

          【解决方案9】:

          好吧,我做了上面提到的。我刚刚添加了 mysql-connector-java-5.1.4 来构建路径并在我的服务器上运行项目并很好地连接到 mysql

          【讨论】:

            【解决方案10】:

            只需更改mysql的版本 在 pom.xml 中使用它

            <version>8.0.11</version>
            

            【讨论】:

              【解决方案11】:

              使用下面提到的依赖它会为你工作!

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

              【讨论】: