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。
1
2
3
4
5
2
3
4
5
参考资料:MySQL出现Waiting for table metadata lock的原因以及解决方法 (opens new window)
# 参考资料
编辑 (opens new window)
上次更新: 2022/10/25, 02:40:54