mysql表死锁Waiting for table metadata lock处理
一、查看mysql执行状态
show processlist
查看展示出来的state字段,是否有 Waiting for table metadata lock,存在则标识该表存在未完成的事务,不能执行DDL语句。
二、查看当前未提交事务的mysql执行
select trx_state, trx_started, trx_mysql_thread_id, trx_query from information_schema.innodb_trx
- trx_state: 事务状态,一般为RUNNING
- trx_started: 事务执行的起始时间,若时间较长,则要分析该事务是否合理
- trx_mysql_thread_id: MySQL的线程ID,用于kill
- trx_query: 事务中的sql
三、处理死锁(删除未提交的mysql 执行)
kill trx_mysql_thread_id;
- 清除第二步查出来的trx_mysql_thread_id 值代表的执行;
- 清除第一步查出来的 state = Waiting for table metadata lock执行线程 使用id (kill id)