广告
返回顶部
首页 > 资讯 > 数据库 >mysql数据库死锁问题解决MySQLTransactionRollbackException: Lock wait timeout exceeded; try restarting transact
  • 579
分享到

mysql数据库死锁问题解决MySQLTransactionRollbackException: Lock wait timeout exceeded; try restarting transact

数据库mysqlsql 2023-08-16 21:08:58 579人浏览 八月长安
摘要

记录一下: 原因:spring事务提交时导致数据库事务得不到释放,产生死锁问题,紧接着抛出操作超时异常:MySQLTransactionRollbackException: Lock wait timeout exceeded; try

记录一下:

原因:spring事务提交时导致数据库事务得不到释放,产生死锁问题,紧接着抛出操作超时异常:MySQLTransactionRollbackException: Lock wait timeout exceeded; try restarting transaction

有可能是因为spring事务嵌套引起的问题,总之先解决眼前的问题,把Mysql中产生死的事务进程干掉,所以记录一下sql

相关sql记录:

-- 查看数据库当前的进程show processlist;-- 当前运行的所有事务SELECT * FROM infORMation_schema.INNODB_LOCKs;-- 当前出现的锁SELECT * FROM information_schema.INNODB_LOCK_waits;-- 锁等待的对应关系SELECT * FROM information_schema.INNODB_TRX;-- 查询产生锁的具体sqlselect     a.trx_id 事务id ,    a.trx_mysql_thread_id 事务线程id,    a.trx_query 事务sql from     INFORMATION_SCHEMA.INNODB_LOCKS b,    INFORMATION_SCHEMA.innodb_trx a where     b.lock_trx_id=a.trx_id;-- !!!select concat('KILL ',a.trx_mysql_thread_id ,';') from INFORMATION_SCHEMA.INNODB_LOCKS b,INFORMATION_SCHEMA.innodb_trx a where b.lock_trx_id=a.trx_id;-- 杀掉死锁进程kill {thread_id};

解决:

在事务回滚注解中添加参数:propagation = Propagation.REQUIRES_NEW(默认为:Propagation.REQUIRED)

@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW)    ResponseData updateBath(List entity) throws ParseException;

来源地址:https://blog.csdn.net/ITmime/article/details/127566753

您可能感兴趣的文档:

--结束END--

本文标题: mysql数据库死锁问题解决MySQLTransactionRollbackException: Lock wait timeout exceeded; try restarting transact

本文链接: https://www.lsjlt.com/news/372129.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作