java.sql.SQLException:未知的系统变量'query_cache_size'

Kiê*_*ung 25 java mysql jdbc spring-boot

我有一个运行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]
Run Code Online (Sandbox Code Playgroud)

我在这里有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
Run Code Online (Sandbox Code Playgroud)

Mysql workbench是8.0版本

ste*_*n35 42

query_cache_size在MySQL中被删除8.检查文档.

它适用于JDBC驱动程序5.1.44.

  • 我正在使用mysql-connector-java版本6.0.3在我的项目中添加maven依赖项.我仍然得到同样的错误 (3认同)

小智 22

java.sql.SQLException:未知的系统变量'query_cache_size'

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

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

有用!!!!


小智 7

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


Asa*_*eel 7

我有一个类似的问题。我通过在mysql依赖中指定版本来解决它

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.45</version>
    <scope>runtime</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)

对我来说就像一个魅力。


小智 7

对于 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”驱动程序类。


小智 6

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

 <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>6.0.5</version>
 </dependency>
Run Code Online (Sandbox Code Playgroud)

它显示异常:由:java.sql.SQLException:未知的系统变量query_cache_size引起

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

  <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.13</version>
  </dependency>
Run Code Online (Sandbox Code Playgroud)

它有效。你必须使用最新的依赖项


小智 5

如果您使用 MySql v8.0 那么您应该尝试修复此错误

mysql-连接器-java-5.1.9