跳到主要内容

MySQL 错误记录

背景是,Navicat 在针对一张表格做删除操作的时候,会一直等待,无法进行任何操作。

经过 show PROCESSLIST 发现是 Waiting for table metadata lock 错误。

删除 mysql 中表格遇到锁

出现了Waiting for table metadata lock 的原因是,程序中对于数据库的一次操作并没有成功关闭,导致数据库上锁后,没有解锁。按照如下操作即可解决问题。

show PROCESSLIST; # 显示所有的操作
select * from information_schema.innodb_trx # 查看未提交事务
kill sid # 删除锁住的操作
set session lock_wait_timeout = 1800; set global lock_wait_timeout = 1800;
# 调整锁超时阈值 lock_wait_timeout 表示获取metadata lock的超时(单位为秒),允许的值范围为1到31536000(1年)。 默认值为31536000。

参考资料:MySQL出现Waiting for table metadata lock的原因以及解决方法

参考资料