Cause: java.sql.SQLException: Could not retrieve transation read-only status server
背景
最近在部署一套完整的项目,部署过程中遇到很多的问题,在来总结一些如标题的这个错误!
- 环境说明:
使用分布式数据库,使用的是mysql!
### Cause: java.sql.SQLException: Could not retrieve transation read-only status server
; SQL []; Could not retrieve transation read-only status server; nested exception is java.sql.SQLException: Could not retrieve transation read-only status server, dubbo version: 2.5.3, current host: 127.0.0.1
org.springframework.dao.TransientDataAccessResourceException:
### Error querying database. Cause: java.sql.SQLException: Could not retrieve transation read-only status server
问题排查
因为项目的代码没有改动,目前这一套代码已经在生产上运行了,目前出现错误的原因在之前生产上没有遇到。
1、报错了,网上查相关资料
通过在网上查找资料,
有两种说法:
1)、修改 数据库的隔离级别,将 REPEATABLE-READ
修改为READ-COMMITED
.
2)、数据库和应用中数据库驱动(mysql驱动版本不一致)
2、查看数据库信息
mysql> SHOW VARIABLES LIKE '%iso%';
+-----------------------+-----------------+
| Variable_name | Value |
+-----------------------+-----------------+
| transaction_isolation | REPEATABLE-READ |
| tx_isolation | REPEATABLE-READ |
+-----------------------+-----------------+
mysql> select version();
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id: 662239
Current database: shop
+-----------------------------------+
| VERSION() |
+-----------------------------------+
| 5.7.21-dbproxy-4.0-20180412155855 |
+-----------------------------------+
发现数据库配置的确是REPEATABLE-READ
,因为我不能随便改动这个数据库,数据库隔离级别这个业务有紧密的关系,那么首先从版本是否匹配进行解决,问了相关同事:
问:你好, 5.7.21-dbproxy-4.0-20180412155855这个 版本的对mysql驱动有要求,最低mysql驱动是支持多少 ?
答:5.1.27~5.1.35
查看了一下目前项目的mysql驱动配置,发现是 5.1.24 ,版本低于要求的版本。
3、 升级mysql驱动
对mysql版本进行升级,升级为 5.1.30,重新部署,发现还是报错,于是又升级到 5.1.32,部署后,发现不报错了。问题解决了!
总结
解决一个问题的方法可能有多种,选择一个最合适的方法,比如上面的这个问题,可能解决的方法的有两个,一个是修改mysql的隔离级别,一个修改应用的mysql驱动版本,那个对业务的影响更小的,那肯定是修改mysql驱动版本。
如果您觉得这篇博文对你有帮助,请点赞或者喜欢,让更多的人看到,谢谢!
如果帅气(美丽)、睿智(聪颖),和我一样简单善良的你看到本篇博文中存在问题,请指出,我虚心接受你让我成长的批评,谢谢阅读!
祝你今天开心愉快!
欢迎访问我的csdn博客,我们一同成长!
不管做什么,只要坚持下去就会看到不一样!在路上,不卑不亢!
博客首页 : http://blog.csdn.net/u010648555
© 每天都在变得更好的阿飞
Cause: java.sql.SQLException: Could not retrieve transation read-only status server的更多相关文章
- java代码在开始事务后,先做了一个查询,再insert,此时会报: java.sql.SQLException: could not retrieve transation read-only status server
解决过程: 查看mysql的事物隔离级别 SHOW VARIABLES LIKE '%iso%'; 返回结果: REPEATABLE-READ 把这个改成:READ-COMMITTED 就好了: SE ...
- java.sql.SQLException: Could not retrieve transaction read-only status from server 问题解决
网上有2种主要说法 第一种 问题描述: java代码在开始事务后,先做了一个查询,再insert,此时会报: java.sql.SQLException: could not ret ...
- MySQL案例04:Cause: java.sql.SQLException: Could not retrieve transaction read-only status from server
今天同事发现程序日志有异常抛出,询问原因,进过排查发现与java的连接参数有关系,具体处理过程如下: 一.错误信息 "message": "\n### Error upd ...
- 【异常】java.sql.SQLException: Could not retrieve transaction read-only status from server Query
1 详细异常 java.sql.SQLException: Could not retrieve transaction read-only status , ], [ChargingOrderRea ...
- 【异常】ser class threw exception: java.sql.SQLException: The last packet successfully received from the server was 39,444 milliseconds ago. The last
1 详细异常 ser class threw exception: java.sql.SQLException: The last packet successfully received from ...
- java.sql.SQLException: Operation not allowed after ResultSet closed
转自:http://blog.csdn.net/hellobobantang/article/details/7173622 java.sql.SQLException: Operation not ...
- java.sql.SQLException: Incorrect key file for table 'C:\Windows\TEMP\#sql578_6e2_68d.MYI'; try to repair it
java.sql.SQLException: Incorrect key file for table 'C:\Windows\TEMP\#sql578_6e2_68d.MYI'; try to re ...
- java.sql.SQLException: ORA-00911: invalid character 解决方法
java.sql.SQLException: ORA-00911: invalid character 控制台抛出这个异常:java.sql.SQLException: ORA-00911: inva ...
- java.sql.SQLException: No suitable driver 问题解决
最近在学习java,用到c3p0数据库连接池,遇到一个很奇怪的现象,用main方法测试是可以正常连接数据库的,但是使用jsp调用代码,就会报如下图的错误! 最下面的java.sql.SQLExcept ...
随机推荐
- Advanced RESTClient插件安装 google浏览器
在csdn下载插件,并解压. 然后在设置里找到扩展程序,打开并开启开发者模式,加载你刚刚解压的插件就可以. 我是用了蓝灯打开google的,成功后这样的
- python自带的IDLE如何清屏
作者:知乎用户 链接:https://www.zhihu.com/question/20917976/answer/32876441 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转 ...
- gulp.js 的安装以及使用
首先:电脑需要安装 Node.js 一个大绿色的安装按钮,点击就可以. 但还是推荐,点击download选中一款适合电脑配置的版本. Node安装过程,就是下一步 and 下一步~~ 测试手否安装成功 ...
- 20155203 2016-2017-2 《Java程序设计》第7周学习总结
20155203 2016-2017-2 <Java程序设计>第6周学习总结 教材学习内容总结 1.Lambda表达式.(使用interface函数接口) 2.Lambda的方法参考Met ...
- 20155233 2016-2017-2 《Java程序设计》第5周学习总结
20155233 2016-2017-2 <Java程序设计>第5周学习总结 学习目标 理解异常架构 牚握try...catch...finally处理异常的方法 会用throw,thro ...
- swift3.0之后的Error处理
在之前的版本中,Swift中Error与OC中NSError没有关系.但是现在两者可以互相强转. 我们看看两者的区别:Error是一个实现Error协议的枚举或者结构体,对外能够获取的具体信息只有ra ...
- python中的__call__
如果python中的一个类定义了 __call__ 方法,那么这个类它的实例就可以作为函数调用,也就是实现了 () 运算符,即可调用对象协议 下面是一个简单的例子: class TmpTest: de ...
- JQuery效果隐藏/显示
hide() 方法 语法 $(selector).hide(speed,callback) show() 方法 语法 $(selector).show(speed,callback) 参数 描述 sp ...
- VCForPython27.msi安装后, 还显示error: Unable to find vcvarsall.bat
C:\Users\zpc\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0\VC 增加环境变量: SET VCPYTH ...
- cancel_delayed_work和flush_scheduled_work【转】
转自:http://blog.chinaunix.net/uid-9688646-id-4052595.html 是不是觉得很玄?像思念一样玄?那好,我们来看点具体的,比如935行,INIT_DELA ...