天天看点

执行mysql语句卡死

问题:执行ALTER TABLE table1 ADD COLUMN name text(10) NOT NULL;时,sql语句卡住不动,如下图:

执行mysql语句卡死

思路:

       1、通过mysql日志查找原因,查log语句:select * from INFORMATION_SCHEMA.processlist where COMMAND = "Query"\G

执行mysql语句卡死

       2、通过log可以看到是数据表被锁定,锁定的原因是有其他项目正连接着这个数据库,所以要更改表首先要断掉其他链接。

解决方法:

       先执行下面语句关闭指定表的连接,然后再执行上面修改表的sql语句即可,且不影响其他项目对mysql的操作。

mysql -uroot -p123456 -e 'show processlist' | awk '/table_name/{ print $1}' | xargs -i  mysql -uroot -p123456 -e 'kill {}'