第一遇见这个问题感觉很神奇,这怎么会锁住呢。
起因是因为执行了一条SQL,但由于不是符合的SQL,数据量较大一时半会停不下来,就想到了直接重启,最后导致执行新的SQL语句时抛出Lock wait timeout exceeded; try restarting transaction异常。
目录
两种解决部分,一种是从别处学来通过执行SQL解决,另外一种直接在Navicat点击解决。
通过执行SQL解决
这其中好像有多种解决办法,我在这里借鉴借鉴。
innodb_trx
当前运行的所有事务innodb_locks
当前出现的锁innodb_lock_waits
锁等待的对应关系
杀死进程
第一步:查询占有资源进程
select * from information_schema.innodb_trx
第二步:杀死进程
kill 738178711
杀死用户
查找执行线程用时比较久的用户,然后直接干掉
SELECT * from information_schema.`PROCESSLIST` WHERE Time > 1000 AND USER = 'wonguser' ORDER BY TIME desc;
kill 740097562
通过Navicat中点击解决
第一步:进入首页面,点击窗口,出现一个弹窗,选中其中服务监控选项,出现你的库
第二步:勾选自己所属使用数据库,在进程列表中下拉查看正在执行的原来的SQL进程
第三步:选中列表项,右击会有结束进程选项,点击结束进程,刷新数据库,解决此问题了。
加油,不负年华不负卿