mysql表无法修改,执行命令以后一直卡住问题

今天遇到个问题,要修改一个字段的数据类型,但是执行完 ALTER TABLE c2c_acceptant_info MODIFY email CHAR(50) NOT NULL;命令后一直卡住无法执行,ctrl+c中断后报error1317错误,终端窗口关了,忘记报错截图了。

 

首先执行:

show full processlist; 

列出当前的操作process,看到了很多waiting的process,说明已经有卡住的proces了。

show processlist 是显示用户正在运行的线程,需要注意的是,除了 root 用户能看到所有正在运行的线程外,其他用户都只能看到自己正在运行的线程,看不到其它用户正在运行的线程。除非单独给这个用户赋予了PROCESS 权限。

 

查看正在执行的线程,并按 Time 逆排序

select * from information_schema.processlist where Command != 'Sleep' order by Time desc;

 

找出所有执行时间超过 5 分钟的线程,拼凑出 kill 语句,方便后面查杀

select concat('kill ', id, ';') from information_schema.processlist where Command != 'Sleep' and Time > 300 order by Time desc;


我是没有使用kill杀进程,最直接有效的方法,重启mysql,就可以正常操作了。

kill processid。杀死进程,如:kill 10141,10141表示上面查询得到的id;