执行mysql语句卡死
问题:执行ALTER TABLE table1 ADD COLUMN name text(10) NOT NULL DEFAULT "";时,sql语句卡住不动,如下图:
思路:
1、通过mysql日志查找原因,查log语句:select * from INFORMATION_SCHEMA.processlist where COMMAND = "Query"\G
2、通过log可以看到是数据表被锁定,锁定的原因是有其他项目正连接着这个数据库,所以要更改表首先要断掉其他链接。
解决方法:
先执行下面语句关闭指定表的连接,然后再执行上面修改表的sql语句即可,且不影响其他项目对mysql的操作。
mysql -uroot -p123456 -e 'show processlist' | awk '/table_name/{ print $1}' | xargs -i mysql -uroot -p123456 -e 'kill {}'