发布于2021-12-30
问题发生:
修改表结构,字段名称、字段长度等,一直卡死不执行。
刚开始的解决思路:
找到没完成DDL的操作进程将其杀死即可。
使用
select * from information_schema.innodb_trx;
得到的进程太多了,根本无法及时将具体是哪个问题进程杀死(因为不知道是哪一个)
最后解决办法:
(注意用root用户执行命令)
select concat("kill",trx_mysql_thread_id,";") as kill_id from information_schema.INNODB_TRX where trx_lock_structs=0 and trx_weight=0 and trx_rows_locked=0 and trx_rows_modified=0 and trx_state='RUNNING';
一次性找到所有未完成的进行,并通过sql语句将其全部找到,然后统一杀死(万不得已,不建议这么做,基本就等于宁错杀一千也不放过一个)
最终解决解决Waiting for table metadata lock导致的无法进行的表操作
优点:不用重启MySQL
缺点:可能会误杀正在正常运行的SQL
评论(0)