首页 > 数据库 >活久见 MySQLTransactionRollbackException: Lock wait timeout exceeded; try restarting transaction

活久见 MySQLTransactionRollbackException: Lock wait timeout exceeded; try restarting transaction

时间:2022-11-06 11:00:30浏览次数:64  
标签:MySQLTransactionRollbackException transaction java invoke Lock bpm springframewo


竟然遇到了 数据库的死锁: 

2022-11-05 23:51:18.298 | ERROR 30116 | http-nio-48080-exec-9 [TID: N/A] c.i.y.f.w.c.h.GlobalExceptionHandler     | [defaultExceptionHandler]

org.springframework.dao.CannotAcquireLockException:
### Error updating database. Cause: com.mysql.cj.jdbc.exceptions.MySQLTransactionRollbackException: Lock wait timeout exceeded; try restarting transaction
### The error may exist in cn/iocoder/yudao/module/bpm/dal/mysql/task/BpmProcessInstanceExtMapper.java (best guess)
### The error may involve cn.iocoder.yudao.module.bpm.dal.mysql.task.BpmProcessInstanceExtMapper.update-Inline
### The error occurred while setting parameters
### SQL: UPDATE bpm_process_instance_ext SET process_instance_id = ?, form_variables = ?, update_time = ?, updater = ? WHERE bpm_process_instance_ext.tenant_id = 1 AND deleted = 0 AND (process_instance_id = ?)
### Cause: com.mysql.cj.jdbc.exceptions.MySQLTransactionRollbackException: Lock wait timeout exceeded; try restarting transaction
; Lock wait timeout exceeded; try restarting transaction; nested exception is com.mysql.cj.jdbc.exceptions.MySQLTransactionRollbackException: Lock wait timeout exceeded; try restarting transaction
at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:267)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:70)
at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:91)
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:441)
at com.sun.proxy.$Proxy136.update(Unknown Source)
at org.mybatis.spring.SqlSessionTemplate.update(SqlSessionTemplate.java:288)
at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:64)
at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:148)
at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89)
at com.sun.proxy.$Proxy339.update(Unknown Source)
at cn.iocoder.yudao.module.bpm.dal.mysql.task.BpmProcessInstanceExtMapper.updateByProcessInstanceId(BpmProcessInstanceExtMapper.java:30)
at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:627)
at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:162)
at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89)
at com.sun.proxy.$Proxy339.updateByProcessInstanceId(Unknown Source)
at cn.iocoder.yudao.module.bpm.service.task.BpmProcessInstanceServiceImpl.createProcessInstance0(BpmProcessInstanceServiceImpl.java:397)
at cn.iocoder.yudao.module.bpm.service.task.BpmProcessInstanceServiceImpl.createProcessInstance(BpmProcessInstanceServiceImpl.java:128)
at cn.iocoder.yudao.module.bpm.service.task.BpmProcessInstanceServiceImpl$$FastClassBySpringCGLIB$$670b387.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:793)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763)
at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:123)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763)
at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:123)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:388)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:708)
at cn.iocoder.yudao.module.bpm.service.task.BpmProcessInstanceServiceImpl$$EnhancerBySpringCGLIB$$d35ab061.createProcessInstance(<generated>)
at cn.iocoder.yudao.module.bpm.controller.admin.task.BpmProcessInstanceController.createProcessInstance(BpmProcessInstanceController.java:46)


哦, 仔细看, 其实并不是死锁, 而是获取锁超时, 为什么呢? 

难道是我对 bpm_process_instance_ext表还有其他的锁操作, 导致了 我无法再次对他update ?


show full processlist -- where db like 'ruoyi-vue-pro';
kill 2555;
show open tables where in_use>0;
select * from information_schema.innodb_locks;
select * from information_schema.innodb_lock_waits;


发现有一个进程2555 指向了一个query sql , 然后一直是starting状态, 为什么呢? 难道无法执行query? 按理说一般的查询是不需要锁的吧

活久见 MySQLTransactionRollbackException: Lock wait timeout exceeded; try restarting transaction_数据库锁


kill 2555 之后, 还是不行啊.. why ?



参考 

​https://www.cnblogs.com/christopherchan/p/12390819.html​

​https://blog.csdn.net/yulang1992514/article/details/117756550​


难道是我的db editor 中存在未提交的事务? 


难道是sql中有中文?  难道是网络不太好的原因?  好像有点道理, 手机打开头条的视频图片感觉确实很慢啊.. 有一些卡啊..


不知道, 搞了很久搞不定,  睡觉了先.


第二天10点才起床, 洗漱完毕后打开电脑重试, 发现竟然可以了...  神奇吧?



标签:MySQLTransactionRollbackException,transaction,java,invoke,Lock,bpm,springframewo
From: https://blog.51cto.com/u_12497420/5827242

相关文章

  • 阻塞队列 - BlockingQueue
     线程通信的一个工具。在任意时刻,不管并发有多高,在单JVM上面,同一时间永远只有一个线程能够对队列进行入队或者出队操作。1.线程安全的队列;2.队列类型:无限队列、有限队......
  • 长事务 (Long Transactions)
    长事务长事务用于支持AutoCAD参照编辑功能,对于ObjectARX应用程序非常有用。这些类和函数为应用程序提供了一种方案,用于签出实体以进行编辑并将其签回其原始位......
  • SQL SERVER 中 sys.dm_tran_locks 消息 297,级别 16,状态 1,第 6 行 用户没有执行此操
     SQLSERVER中 sys.dm_tran_locks 消息297,级别16,状态1,第6行用户没有执行此操作的权限。--1.查询数据库阻塞与死锁的进程清单(可分析清单详情,看看死锁id对应的......
  • ORACLE新参数MAX_IDLE_TIME和MAX_IDLE_BLOCKING_TIME简介
    Oracle12.2引入了新参数MAX_IDLE_TIME。它可以指定会话空闲的最大分钟数。如果会话空闲的时间超过了这个阈值的话,这个会话将会被自动终止。其实在Oracle10g&11g时代,我......
  • create_clock你用对了吗
    毋庸置疑,create_clock是最基本、最简单的时序约束命令,而且在FPGA设计中必然会用到。但看似简单的命令,却也常常被用错。这里我们就来回答一些常见的问题。问题1:什么样的时......
  • creat clock
    在FPGA编程中,在XDC(或UCF)文件中使用create_clock命令有什么意义?假设我有一个时钟端口CLK,它被分配给XDC(或UCF)文件中的物理引脚(我的时钟).为什么我不能继续在我的顶级H......
  • C# Interlocked 类
    【前言】在日常开发工作中,我们经常要对变量进行操作,例如对一个int变量递增++。在单线程环境下是没有问题的,但是如果一个变量被多个线程操作,那就有可能出现结果和预期不一......
  • 【EF Core】三种事务(SaveChange、DBContextTransaction、TransactionScope)
    原文网址:https://www.cnblogs.com/fanfan-90/p/16296737.htmlEF中的事务主要分为三类,分别是SaveChanges、DbContextTransaction、TransactionScope。SaveChangesSaveCha......
  • CF1141F2 Same Sum Blocks (Hard)
    题目传送门思路简单题。不妨先预处理出每一个区间的\(\sum\),然后离散化\(\sum\),对于每个\(\sum\)开一个\(\mathcalvector\)记录所有区间的左右端点。然后枚举每......
  • 11g Active Dataguard的Automatic Block Repair特性
    11g出来这么多年了,虽然早就知道这个特性,但一直也没有亲自测试一下,今天正好有业务需求,简单测试了下,记录之。1.在主库中创建测试用户和测试表(test.adg):createusertesti......