Mysql删除占用事务的线程

参考:https://www.jianshu.com/p/dd0291391188

产生原因:这个问题的原因是在mysql中产生了事务A,执行了修改的语句,比如: update t1 set aget=18 where id=1;此时事务并未进行提交,事务B开始运行,也同样需要修改id为1的用户的年龄: update t1 set aget=20 where id=1; 那么此时事务B会等待事务A结束释放写锁才能执行成功,否则则会等待一段时间,产生报错:

bash 复制代码
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction

解决办法(删除占用事务的线程id):

1、查询事务id

bash 复制代码
select * from information_schema.innodb_trx

2、删除事务

bash 复制代码
kill 24232092

到此可以继续你的修改数据的操作了 。

3、如果以上方法杀掉线程,但还是不能解决,则我们就可以查找执行线程用时比较久的用户,然后直接kill掉

bash 复制代码
SELECT * from information_schema.`PROCESSLIST` WHERE Time > 1000 AND USER = 'root' ORDER BY TIME desc;

SELECT * from information_schema.PROCESSLIST WHERE Time > 1000 AND USER = 'root' ORDER BY TIME desc;

拓展 (INFORMATION_SCHEMA INNODB_TRX 表)

INNODB_TRX表包含有关当前正在执行的每个事务的信息 ,包括事务是否正在等待锁,事务何时开始以及事务正在执行的SQL语句(如果有)。

表字段

相关推荐
weixin_520649871 小时前
数据库函数
数据库
Bert.Cai2 小时前
MySQL LPAD()函数详解
数据库·mysql
OnlyEasyCode3 小时前
Navicat 任务自动备份指定数据库
数据库
if else3 小时前
Redis 哨兵集群部署方案
数据库·redis
yejqvow123 小时前
Pandas 高效实现组内跨行时间戳匹配与布尔标记
jvm·数据库·python
了不起的云计算V3 小时前
从DeepSeek V4适配看国产算力的三个拐点
数据库·人工智能
qq_189807034 小时前
html标签如何提升可访问性_aria-label与title区别【指南】
jvm·数据库·python
norq juox4 小时前
MySQL 导出数据
数据库·mysql·adb
qq_349317484 小时前
mysql如何设置定时自动备份脚本_编写shell脚本与cron任务
jvm·数据库·python
952364 小时前
Spring IoC&DI
java·数据库·spring