mysql表被锁了怎么办? error:1205 - Lock wait timeout exceeded; try restarting transaction

error:1205 - Lock wait timeout exceeded; try restarting transaction

起因: 执行一个简单的insert语句失效,具体错误如下:1205 - Lock wait timeout exceeded; try restarting transaction。

这个错误是由于mysql事务没有提交导致锁等待。

解决方案:
1、在Navicat中执行mysql命令:show full processlist;
2、然后找到查询语句的id,kill掉被锁住的线程id
3、查看事务表:select * from information_schema.innodb_trx;

show full processlist;

一、介绍一下每个属性
id 很容易就猜到是这个连接的id,值对应这个连接使用的线程id。
User用户名
Host 连接的地址和端口,那么你可能会问,为什么我贴的例子的地址都是同一个host呢,很明显是用了代理,感兴趣的可以看看这篇文章http://www.phpv.net/html/1583.html,这里就不详细解释了。
db 此连接所连接使用的数据库名。
command 一般有俩值:sleep和query,从字面意思就可以看出,一个是处理睡眠状态,就是处于连接状态,但是没有正在执行任何sql语句,Query代表正在执行sql语句。
Time 连接的时间。
State 我个人觉得应该是当前线程的状态吧。
info 代表正在执行的sql,如果command为sleep时,它为空。

那如果我们遇到一个sql要执行很长时间,但是我们又不想让它继续执行了,怎么办呢?既然每个连接是在一个线程里维护,这个线程是否可以删除呢?我们尝试杀掉15814这个线程

kill 15814;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值