错误场景
在navicat的数据库的某表,全选删除,等待了大概40s 。然后提示
lock wait timeout exceeded; try restarting transactio
,然后懵逼了,好在还没上线。
出现原因
原因是有一个事物占用这张表,而我确定删除的事件已经停止,并且已经提交了事物,但没有卵用。
解决方案
- 先看数据库线程有没有锁表
show PROCESSLIST;
如果没有就查看事物。
- 查看事物
select * from information_schema.innodb_trx;
查询状态为
RUNNING
即正在执行事物,可能就是这条事物锁住了表。
kill 掉trx_mysql_thread_id 这条线程应该就没问题了,但要确定这条线程跟业务代码无关。