MySQL 死锁问题

报错

com.mysql.jdbc.exceptions.MySQLTransaction.Deadlock found when trying to get lock;try restarting transaction

解决过程

在更新数据的时候报了这个错,报错信息中出现了关键词Deadlock。所以是出现了死锁。
查看数据引擎的日志信息

# 查看当前的事务状态
SHOW ENGINE INNODB STATUS;
# 这条语句将显示InnoDB引擎的状态信息,其中包含了当前执行的事务信息、锁等待的信息以及其他相关的统计数据。

日志中出现了死锁的相关信息

------------------------
LATEST DETECTED DEADLOCK
------------------------
2024-05-28 10:02:48 0x7f2441a34700
*** (1) TRANSACTION:
TRANSACTION 121880930, ACTIVE 168 sec fetching rows
mysql tables in use 1, locked 1
LOCK WAIT 143 lock struct(s), heap size 57552, 5096 row lock(s), undo log entries 4768
MySQL thread id 4096713, OS thread handle 139793685145344, query id 36850628 127.0.0.1 root updating

查看事务的线程id,kill掉就可以了

# 查看当前事务列表
SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX;
# 这条语句将返回一个包含所有当前活动事务的结果集,包括事务ID、开始时间、等待锁的状态等信息。

# 杀死造成死锁的进程:thread_id就是上一个语句查询结果中的trx_mysql_thread_id
KILL <thread_id>;
# 使用上一步中提供的死锁信息,确定造成死锁的线程ID,并使用此命令终止该线程。这将强制终止正在运行的事务,解开死锁。

问题解决,具体的死锁原因待排查
over~

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值