问题描述

上上个周测试的时候突然报系统异常,于是我立即查看日志,发现是一个数据库异常:java.sql.SQLException: connection holder is null
我第一想到的就是可能是那种概率很小的突发事件,然后就和测试说没关系只是数据库连接异常以后应该没事,然后项目因为更新重启后也没有什么问题,直到第二天有一次出现这个问题,这时候我才意识到这个不是突发事件。肯定是系统问题。

解决方案

  1. 发现问题后开始去网上找,结果发现是druid连接池的问题,而网上好多对于这种问题的解决方案都是修改配置文件,但是我去看配置文件无需修改,然后去各种查找依然没有找到,然后当天只能靠重启解决问题。第三天继续查找问题,还是无果,但是晚上回去分析问题,以前都没有出现过这个问题怎么突然出现了这个问题,初步判断应该是最近更新代码的问题,于是第二天上午,将新合并的代码挨个重新检查一遍,真的发现一个问题是,其他同事使用编程式事务失败的时候没有回滚,其实这个问题早就应该想到了,出现这个问题的同时还有测试反应更新的数据多次查询一直在变化,其实这个就是事务没有提交的问题,在之前的公司我遇到过这样的问题,不过这个问题修改数据的时候都会报一个锁等待超时错误,结果我并没有找到这个错误,所以当时也没有朝这个方向去想。
  2. 当发现可能是事务未提交造成的问题,我也模拟一下,但是都是产生的锁等待超时问题,但是修改正确以后测试了一个周都没有在出现那个问题,可以确定是由于事务问题造成的。

反思总结

  1. 这个问题也可以发现自己好多的问题,从发现问题开始并没有进行细致的思考,想当然的定义问题
  2. 在该问题过程中对待一些伴随出现的问题视而不见,没有将其联系到一起去考虑分析问题
  3. 目前还没有具备分析源码的能力。导致出现框架问题只能去猜,去看别人如何解决。

java.sql.SQLException: connection holder is null 问题处理的更多相关文章

  1. java.sql.SQLException: connection holder is null;

    一.问题来源分析 出现的错误 : Cause: java.sql.SQLException: connection holder is null; uncategorized SQLException ...

  2. 开发中遇到的Cause: java.sql.SQLException: connection holder is null的异常

    异常的出现是属于获取连接超时,从而找不到持有者. 项目中的配置体现: <property name="removeAbandoned" value="true&qu ...

  3. java.sql.SQLException: Connection is read-only. Queries leading to data modification are not allowed

    org.springframework.dao.TransientDataAccessResourceException: ### Error updating database. Cause: ja ...

  4. [Done]java.sql.SQLException: Connection is read-only. Queries leading to data modification are not allowed

    java.sql.SQLException: Connection is read-only. Queries leading to data modification are not allowed ...

  5. 详细解读 :java.sql.SQLException: Connection is read-only. Queries leading to data modification are not allowed,Java报错之Connection is read-only.

    问题分析: 实际开发项目中,进行insert的时候,产生这个问题是Spring框架的一个安全权限保护方法,对于方法调用的事物保护,一般配置如下: <!-- 事务管理 属性 --> < ...

  6. connection holder is null新增解决方案(2018-06-02)

    最近在做Java后台的项目,用到了druid数据库连接池,阿里出品,肯定是精品的意思咯,这也是我们老大搭建的框架,我就站在前人的肩膀上飞翔了.先前在一个事物里,使用了多条数据库操作,都是正常的,但是前 ...

  7. HiveServer2 的jdbc方式创建udf的修改(add jar 最好不要使用),否则会造成异常: java.sql.SQLException: Error while processing statement: null

    自从Hive0.13.0开始,使用HiveServer2 的jdbc方式创建udf的临时函数的方法由: ADD JAR ${HiveUDFJarPath} create TEMPORARY funct ...

  8. java.sql.SQLException: null, message from server: “Host ‘xxx’ is not allowed to connect

    java.sql.SQLException: null, message from server: “Host ‘xxx’ is not allowed to connect 2014年06月29日  ...

  9. java.sql.SQLException: Io 异常: Connection reset

    当数据库连接池中的连接被创建而长时间不使用的情况下,该连接会自动回收并失效,但客户端并不知道,在进行数据库操作时仍然使用的是无效的数据库连接,这样,就导致客户端程序报“ java.sql.SQLExc ...

随机推荐

  1. pycharm下的多个python版本共存(一)

    经历过IDLE,anaconda,和pycharn的编程环境,并进行了一段时间的项目编程后,决定使用pycharm作为以后的工作环境. 一方面因为项目组其他人推荐,另一方面在使用过程中比较顺手.当然很 ...

  2. ES6 set和map数据结构对对象数组去重简单实现

    自从有了es6的set数据结构,数组的去重可以简单用一行代码实现,比如下面的方式 let arr = [1, 2, 2, 3, 4] function unique (arr) { return [. ...

  3. 在后台管理系统中引入富文本编辑器 (vue-quill-editor)

    在admin系统中引入富文本编辑器 (vue-quill-editor) 由于公司项目的需求,内容需要更新,那么自然需要admin后台来上传内容,在苦苦寻觅了N个编辑器之后,终于找到了一个比较容易使用 ...

  4. linux测试 scullpipe 驱动

    我们已经见到了 scullpipe 驱动如何实现阻塞 I/O. 如果你想试一试, 这个驱动的源码 可在剩下的本书例子中找到. 阻塞 I/O 的动作可通过打开 2 个窗口见到. 第一个可运行 一个命令诸 ...

  5. Linux 内核存取配置空间

    在驱动已探测到设备后, 它常常需要读或写 3 个地址空间: 内存, 端口, 和配置. 特别 地, 存取配置空间对驱动是至关重要的, 因为这是唯一的找到设备被映射到内存和 I/O 空间的位置的方法. 因 ...

  6. 关于opencv中cv::Mat设置roi

    opencv中设置roi实验: cv::Mat SrcImg; SrcImg = cv::imread("../resource/cpw3.png"); cv::imshow(&q ...

  7. [Python之路] 内存管理&垃圾回收

    一.python源码 1.准备源码 下载Python源码:https://www.python.org/ftp/python/3.8.0/Python-3.8.0.tgz 解压得到文件夹: 我们主要关 ...

  8. git之github解决冲突

    1.先创建一个txt文件,并进行编辑 2.然后推送到github,过程看之前的教程. 3.在另一个文件夹拉取(用小乌龟拉取),分别在克隆文件夹和原本文件夹操作test.txt. 4.把本体推送给服务器 ...

  9. Visio数据视觉化处理

    形状数据的查看的两种方式 定义形状数据:右键单击数据窗口 打勾的代表可以显示 其他没有打勾的就必须要在开发模式才会显示出来 开发模式就是打开开发工具面板 注意其中类型的设置 类型与格式是一一对应的 不 ...

  10. alpha week 2/2 Scrum立会报告+燃尽图 06

    此作业要求参见:https://edu.cnblogs.com/campus/nenu/2019fall/homework/9803 小组名称:“组长”组 组长:杨天宇 组员:魏新,罗杨美慧,王歆瑶, ...