在Navicat中为一张表添加新字段,等待许久没反应,强制关闭后此表不能正常打开
原因分析
在Flask中使用时查询了数据库未存入的字段,导致报错。此查询事务未提交,之后再Navicat中创建字段时便一直在等待。
步骤一 SHOW PROCESSLIST
在数据库右键进入命令列界面,输入
SHOW PROCESSLIST;
可以看到我的ALTER TABLE状态是Waiting for table metadata lock
若State
列出现有LOCK
的状态,输入命令 KILL Id(ID名)
若没有
步骤二 查询未提交的事务
select trx_state, trx_started, trx_mysql_thread_id, trx_query from information_schema.innodb_trx
发现之前的错误查询事务,全部KILL
id就是trx_mysql_thread_id