Mysql 执行写操作报错 Lock wait timeout exceeded; try restarting transaction
前景:
在navicat 中执行delete语句时,发现一直执行但是最后报错 Lock wait timeout exceeded; try restarting transaction。
解决办法:
网上各种搜索,发现说查询mysql的三张表,看是否有锁表
select * from information_schema.innoDb_trx;
select * from information_schema.innodb_locks;
select * from information_schema.innodb_lock_waits;
各自解释: innodb_trx ## 当前运行的所有事务 innodb_locks ## 当前出现的锁 innodb_lock_waits ## 锁等待的对应关系
执行
select * from information_schema.innoDb_trx; 如果数据库中有锁的话,那么在 trx_state为 LOCK_WAIT. 最终发现没有,只有RUNING.发现其 trx_started很早已经距离当前时间相差1小时,于是将RUNING的进程杀掉,可以正常执行delete语句。 kill trx_mysql_thread_id对应的进程id
解释: RUNNING” 即正在执行的事务,并没有锁。。
ZUHONG
|