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语句(如果有)。

表字段

相关推荐
DarkAthena4 分钟前
【GaussDB】从 sqlplus 到 gsql:Shell 中执行 SQL 文件方案的迁移与改造
数据库·sql·oracle·gaussdb
Wpa.wk7 分钟前
接口自动化 - 了解接口自动化框架RESTAssured (Java版)
java·数据库·自动化
二等饼干~za89866811 分钟前
GEO优化---关键词搜索排名源码开发思路分享
大数据·前端·网络·数据库·django
程序员柒叔14 分钟前
Dify 集成-向量数据库
数据库·milvus·向量数据库·工作流·dify·向量库
月明长歌15 分钟前
MySQL 视图:把复杂查询封装成表,并且还能控权限、做解耦
数据库·mysql
l1t15 分钟前
postgresql 18版bytea 类型转换的改进
数据库·postgresql
小蒜学长19 分钟前
python餐厅点餐系统(代码+数据库+LW)
数据库·spring boot·后端·python
岳麓丹枫00122 分钟前
PostgreSQL 中 create database 中的注意事项
数据库·postgresql
梦想画家23 分钟前
告别关键词!PostgreSQL+pgvector 玩转语义和图像检索
数据库·postgresql
爱潜水的小L1 小时前
自学嵌入式day41,数据库
jvm·数据库