mysql8 Could not retrieve transation read-only status server
想回顾下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的更多相关文章
- MySQL错误: could not retrieve transation read-only status server
问题描述: java代码在开始事务后,先做了一个查询,再insert,此时会报: java.sql.SQLException: could not retrieve transati ...
- Cause: java.sql.SQLException: Could not retrieve transation read-only status server
背景 最近在部署一套完整的项目,部署过程中遇到很多的问题,在来总结一些如标题的这个错误! 环境说明: 使用分布式数据库,使用的是mysql! ### Cause: java.sql.SQLExcept ...
- 解决DBCP报错 Could not retrieve transation read-only s
dbcp连接池报错 commons-dbcp 解决Mysql Cannot get a connection, pool error: Could not create a validated ob ...
- java代码在开始事务后,先做了一个查询,再insert,此时会报: java.sql.SQLException: could not retrieve transation read-only status server
解决过程: 查看mysql的事物隔离级别 SHOW VARIABLES LIKE '%iso%'; 返回结果: REPEATABLE-READ 把这个改成:READ-COMMITTED 就好了: SE ...
- 超级详细的解决方法 (CentOS7) :永久修改 mysql read-only 问题 could not retrieve transation read-only status server
一.查看mysql的事物隔离级别 SHOW VARIABLES LIKE '%iso%'; 二.临时修改事物隔离级别 SET GLOBAL tx_isolation='READ-COMMITTED'; ...
- java.sql.SQLException: Could not retrieve transaction read-only status from server 问题解决
网上有2种主要说法 第一种 问题描述: java代码在开始事务后,先做了一个查询,再insert,此时会报: java.sql.SQLException: could not ret ...
- CentOS7.5 上使用 bundle 文件安装 MySQL8.0 MySQL5.0
CentOS7.5 上使用 bundle 文件安装 MySQL8.0 MySQL5.0 CentOS7.5 环境 [root@instance-fjii60o3 ~]# rpm -qi centos- ...
- CentOS8.1操作系下使用通用二进制包安装MySQL8.0(实践整理自MySQL官方)
写在前的的话: 在IT技术日新月异的今天,老司机也可能在看似熟悉的道路上翻车,甚至是大型翻车现场!自己一个人开车过去翻个车不可怕,可怕的是带着整个团队甚至是整个公司一起翻车山崖下,解决办法就是:新出现 ...
- ORACLE中STATUS为INACTIVE但是SERVER为SHARED状态的会话浅析
我们知道当ORACLE数据库启用共享服务器模式时,通过共享服务器模式连接到数据库的会话是有一些特征的.在v$session里面,其SERVER的状态一般为SHARED和NONE, 为SHARED时,表 ...
随机推荐
- 基于bs4库的HTML内容查找方法
一.信息提取实例 提取HTML中所有的URL链接 思路:1)搜索到所有的<a>标签 2)解析<a>标签格式,提取href后的链接内容 >>> import r ...
- Dubbo监控中心搭建-dubbo-monitor-simple的使用
场景 Dubbo环境搭建-管理控制台dubbo-admin实现服务监控: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10362 ...
- 一个简单的python爬虫,爬取知乎
一个简单的python爬虫,爬取知乎 主要实现 爬取一个收藏夹 里 所有问题答案下的 图片 文字信息暂未收录,可自行实现,比图片更简单 具体代码里有详细注释,请自行阅读 项目源码: # -*- cod ...
- 查看KVM宿主机上虚拟机的IP的脚本
查看KVM宿主机上虚拟机的IP的脚本 #!/bin/bash #Auth:liucx #ping当前网段内在线的主机,以便产生arp记录. .{..};do { >& }& do ...
- js克隆一个对象
我们知道,对象类型在赋值的过程中其实是复制了地址,所以如果改变了一方,其他都会被改变.我们应该如何克隆一个对象,并且避免这种现象的发生呢? 方法一:Object.assign function cop ...
- 8,xhtml和html有什么区别
8,xhtml和html有什么区别 功能上有差别:xhtml可以兼容各大浏览器,手机,以及pda,浏览器也能快速准确地翻译网页 书写嘻惯的差别:xhtml必须正确的嵌套,闭合,区分大小写,文档必须有根 ...
- 企业面试问题收集-java基础
Java基础部分 1.1 在登录时进行后台验证,后台获取到loginpass与数据库值对比一直? 1.2 Java中的方法覆盖(Overwrite)和方法重载(Overloading)是什么意 ...
- C语言:找出一个大于给定整数m且紧随m的素数,-求出能整除x且不是偶数的数的个数,
//函数fun功能:找出一个大于给定整数m且紧随m的素数,并作为函数值返回. #include <stdlib.h> #include <conio.h> #include & ...
- coturn服务器配置中英对比
coturn服务器配置中英对比 默认配置位置 /etc/turnserver.conf # RFC5766-TURN-SERVER configuration file # RFC5766-TURN- ...
- docker-install-v0.1-alpha
Written by Zak Zhu docker-install-v0.1-alpha/ ├── inventory ├── roles │ └── docker │ ├── defaults │