想回顾下ssm,看着网上别的帖子手动搭了一个,一直报Could not retrieve transation read-only status server , java.sql.SQLException Unknown system variable 'query_cache_size',这两个错.

网上的帖子都是驱动版本不对,折腾了一整天,驱动版本改了,mysql都重新安装了一遍,最后在我无望的时候,翻到一个帖子...终于爬出了这个坑

【友情提示:不想看我废话的请直接到文章末尾查看解决方法】

详细信息:
严重 [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的设置也不能少,二者缺一不可,少一个就翻车。

更新驱动在这里补充下,pom默认最新版本的.如果上面不行

pom.xml上加上mysql的版本

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

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

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

转载自:https://www.devsong.org/article/102

mysql8 Could not retrieve transation read-only status server的更多相关文章

  1. MySQL错误: could not retrieve transation read-only status server

    问题描述: java代码在开始事务后,先做了一个查询,再insert,此时会报:          java.sql.SQLException: could not retrieve transati ...

  2. Cause: java.sql.SQLException: Could not retrieve transation read-only status server

    背景 最近在部署一套完整的项目,部署过程中遇到很多的问题,在来总结一些如标题的这个错误! 环境说明: 使用分布式数据库,使用的是mysql! ### Cause: java.sql.SQLExcept ...

  3. 解决DBCP报错 Could not retrieve transation read-only s

    dbcp连接池报错 commons-dbcp 解决Mysql Cannot get a connection, pool error:  Could not create a validated ob ...

  4. java代码在开始事务后,先做了一个查询,再insert,此时会报: java.sql.SQLException: could not retrieve transation read-only status server

    解决过程: 查看mysql的事物隔离级别 SHOW VARIABLES LIKE '%iso%'; 返回结果: REPEATABLE-READ 把这个改成:READ-COMMITTED 就好了: SE ...

  5. 超级详细的解决方法 (CentOS7) :永久修改 mysql read-only 问题 could not retrieve transation read-only status server

    一.查看mysql的事物隔离级别 SHOW VARIABLES LIKE '%iso%'; 二.临时修改事物隔离级别 SET GLOBAL tx_isolation='READ-COMMITTED'; ...

  6. java.sql.SQLException: Could not retrieve transaction read-only status from server 问题解决

    网上有2种主要说法 第一种 问题描述: java代码在开始事务后,先做了一个查询,再insert,此时会报:          java.sql.SQLException: could not ret ...

  7. CentOS7.5 上使用 bundle 文件安装 MySQL8.0 MySQL5.0

    CentOS7.5 上使用 bundle 文件安装 MySQL8.0 MySQL5.0 CentOS7.5 环境 [root@instance-fjii60o3 ~]# rpm -qi centos- ...

  8. CentOS8.1操作系下使用通用二进制包安装MySQL8.0(实践整理自MySQL官方)

    写在前的的话: 在IT技术日新月异的今天,老司机也可能在看似熟悉的道路上翻车,甚至是大型翻车现场!自己一个人开车过去翻个车不可怕,可怕的是带着整个团队甚至是整个公司一起翻车山崖下,解决办法就是:新出现 ...

  9. ORACLE中STATUS为INACTIVE但是SERVER为SHARED状态的会话浅析

    我们知道当ORACLE数据库启用共享服务器模式时,通过共享服务器模式连接到数据库的会话是有一些特征的.在v$session里面,其SERVER的状态一般为SHARED和NONE, 为SHARED时,表 ...

随机推荐

  1. 基于bs4库的HTML内容查找方法

    一.信息提取实例 提取HTML中所有的URL链接 思路:1)搜索到所有的<a>标签 2)解析<a>标签格式,提取href后的链接内容 >>> import r ...

  2. Dubbo监控中心搭建-dubbo-monitor-simple的使用

    场景 Dubbo环境搭建-管理控制台dubbo-admin实现服务监控: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10362 ...

  3. 一个简单的python爬虫,爬取知乎

    一个简单的python爬虫,爬取知乎 主要实现 爬取一个收藏夹 里 所有问题答案下的 图片 文字信息暂未收录,可自行实现,比图片更简单 具体代码里有详细注释,请自行阅读 项目源码: # -*- cod ...

  4. 查看KVM宿主机上虚拟机的IP的脚本

    查看KVM宿主机上虚拟机的IP的脚本 #!/bin/bash #Auth:liucx #ping当前网段内在线的主机,以便产生arp记录. .{..};do { >& }& do ...

  5. js克隆一个对象

    我们知道,对象类型在赋值的过程中其实是复制了地址,所以如果改变了一方,其他都会被改变.我们应该如何克隆一个对象,并且避免这种现象的发生呢? 方法一:Object.assign function cop ...

  6. 8,xhtml和html有什么区别

    8,xhtml和html有什么区别 功能上有差别:xhtml可以兼容各大浏览器,手机,以及pda,浏览器也能快速准确地翻译网页 书写嘻惯的差别:xhtml必须正确的嵌套,闭合,区分大小写,文档必须有根 ...

  7. 企业面试问题收集-java基础

    Java基础部分 1.1   在登录时进行后台验证,后台获取到loginpass与数据库值对比一直? 1.2   Java中的方法覆盖(Overwrite)和方法重载(Overloading)是什么意 ...

  8. C语言:找出一个大于给定整数m且紧随m的素数,-求出能整除x且不是偶数的数的个数,

    //函数fun功能:找出一个大于给定整数m且紧随m的素数,并作为函数值返回. #include <stdlib.h> #include <conio.h> #include & ...

  9. coturn服务器配置中英对比

    coturn服务器配置中英对比 默认配置位置 /etc/turnserver.conf # RFC5766-TURN-SERVER configuration file # RFC5766-TURN- ...

  10. docker-install-v0.1-alpha

    Written by Zak Zhu docker-install-v0.1-alpha/ ├── inventory ├── roles │ └── docker │ ├── defaults │