• 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

    © 每天都在变得更好的阿飞

  • 相关阅读:
    大数据量下的SQL Server数据库自身优化
    NodeJS 学习笔记
    SOA、ESB、NServiceBus、云计算 总结
    .NET及.NET Core系统架构
    TCP/IP协议、HTTP协议、SOCKET通讯详解
    web压测工具http_load
    前端面试问题答案汇总--通识篇
    前端面试问题答案汇总--高级篇
    前端面试问题答案汇总--进阶篇
    前端面试问题答案汇总--基础版
  • 原文地址:https://www.cnblogs.com/aflyun/p/9508380.html
Copyright © 2020-2023  润新知