MySQL 8.0 java.sql.SQLException Unknown system variable 'query_cache_size'

由于xxxxx,最近更新了MySQL版本到MySQL8.0,原本以为这只是一次普通的软件升级行为,可是当我跳到坑里的时候,我才意识到没那么简单。下面贴出错误描述。
【友情提示:不想看我废话的请直接到文章末尾查看解决方法】

详细信息:
严重 [http-nio-8080-exec-10] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [mvc-dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: 
### Error querying database.  Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is java.sql.SQLException: Cannot create PoolableConnectionFactory (Unknown system variable 'query_cache_size')
### The error may exist in config/mybatis/sqlXml/article.xml
### The error may involve org.devsong.dao.IArticle.getSiteMapData
### The error occurred while executing a query
### Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is java.sql.SQLException: Cannot create PoolableConnectionFactory (Unknown system variable 'query_cache_size')] with root cause
 java.sql.SQLException: Unknown system variable 'query_cache_size'
... ...

上面的错误看起来是不是很熟悉,没错,上面的错误在以前升级MySQL的时候,是由于数据库连接驱动版本过低,与数据库不匹配。这处理起来很简单,我也遇到过多次了,直接升级mysql-connector版本就行了。你如果在网上搜索上面的错误的话,绝大部分的解决方法也都是升级驱动。

想着已经非常眼熟这个异常了,于是我以一个老司机的姿态像往常一样更新了Maven依赖配置,像什么都没发生过一样重新部署了项目。嘀嘀嘀...错误代码500...我赶紧打开后台看异常信息,我的乖乖,怎么还是上面那个异常,明明更新了驱动的呀。。。至此老司机翻车

我连滚带爬地打开代码,寻找着错误,看了一下Spring相关配置,没问题,看了一下数据库配置文件,没问题。于是我开始猜想是不是其他和数据库相关的东西也该升级了,就这样,我把数据库连接池、Spring-jdbc等能升级的都升级。想着异常一定能解决,于是我再一次部署了项目,内心忐忑的我再一次翻车:嘀嘀嘀...错误代码500。。。



连翻两次车之后,我决定放弃自己折腾了,老老实实去看文档。我搬出了常年不用的梯子,爬到了墙外,在一个角落里,我看到了某些东西:从MySQL8.0开始,已经支持将驱动写为com.mysql.cj.jdbc.Driver。在配置数据库连接的时候,需要加上时区配置。我抱着试一试的心态,修改了一下JDBC配置,在我以为又会失败时,嘀嘀嘀,成功。。。

下面是旧版配置和新版配置的对比:

#### 旧 版 ####
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/test?useSSL=false&useUnicode=true&characterEncoding=UTF-8
jdbc.username=root
jdbc.password=root

#### 新 版 ####
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/test?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
jdbc.username=root
jdbc.password=root

网上说驱动写为com.mysql.jdbc.Driver 或者 com.mysql.cj.jdbc.Driver 都行,但我实际测试必须写为后者才行,并且serverTimezone的设置也不能少,二者缺一不可,少一个就翻车。


总结:
(1)更新驱动
(2)更改jdbc配置 --> driver名、serverTimezone


附:
你在折腾的时候或许重装过MySQL,如果你在卸载重装的过程中发现Windows服务中充斥着多个MySQL,想删除的话: Win + R  >> CMD >> sc delete 服务名

 

转载于MySQL 8.0 java.sql.SQLException Unknown system variable 'query_cache_size'

posted @   所遇所思  阅读(1106)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起
🔑
  1. 1 404 not found REOL
  2. 2 偏爱 张芸京
  3. 3 Glimpse of Us Joji
偏爱 - 张芸京
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.

作词 : 葛大为

作曲 : 陈伟

编曲 : 陈伟

把昨天都作废

现在你在我眼前

我想爱 请给我机会

如果我错了也承担

认定你就是答案

我不怕谁嘲笑我极端

相信自己的直觉

相信自己的直觉

顽固的人不喊累

爱上你 我不撤退

我说过 我不闪躲

我说过 我不闪躲

我非要这么做

讲不听 也偏要爱

更努力爱 让你明白

没有别条路能走

你决定要不要陪我

讲不听 偏爱

靠我感觉爱

等你的依赖

对你偏爱

痛也很愉快

把昨天都作废

把昨天都作废

现在你在我眼前

我想爱 请给我机会

如果我错了也承担

认定你就是答案

我不怕谁嘲笑我极端

相信自己的直觉

相信自己的直觉

顽固的人不喊累

爱上你 我不撤退

我说过 我不闪躲

我说过 我不闪躲

我非要这么做

讲不听 也偏要爱

更努力爱 让你明白

没有别条路能走

你决定要不要陪我

讲不听 偏爱

靠我感觉爱

等你的依赖

不后悔 有把握

不后悔 有把握

我不闪躲 我非要这么做

讲不听 也偏要爱

更努力爱 让你明白

没有别条路能走

你决定要不要陪我

讲不听 偏爱

靠我感觉爱

等你的依赖

对你偏爱 爱

痛也很愉快