java - 代码层面如何解决Lock wait timeout exceeded; try restarting transaction

 一条游荡在重庆的鱼_759 发布于 2022-10-27 13:44
代码层面如何解决Lock wait timeout exceeded; try restarting transaction

代码如下:

org.springframework.dao.CannotAcquireLockException: 
### Error updating database.  Cause: java.sql.SQLException: Lock wait timeout exceeded; try restarting transaction
### The error may involve com.alibaba.tboss.dal.mysql.workOrder.mapper.AssetBeanMapperExt.updateByPrimaryKeySelective-Inline
### The error occurred while setting parameters
### SQL: update idc_asset_list      SET sn = ?,                                                                                                           MODIFIER = 'system',                       GMT_MODIFIED = current_timestamp,                                            remark = ?,                                                                        flow_state = ?      where asset_id = ?     and is_deleted = 'n'
### Cause: java.sql.SQLException: Lock wait timeout exceeded; try restarting transaction
; SQL []; Lock wait timeout exceeded; try restarting transaction; nested exception is java.sql.SQLException: Lock wait timeout exceeded; try restarting transaction
2 个回答
  • 建议把UPDATE功能拆分,改成先删除再插入,这样会好的多。

    2022-10-28 11:38 回答
  • 这个主要还是得看你另外哪个事务太慢,把行锁一直拿着不释放。Spring的@Transactioal注解里面的timeout是可以加长时间的,但最好还是遵循默认的,找出慢的事务,通过各种优化方式解决,比如大事务拆小事务

    2022-10-28 11:38 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有