天天看點

執行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 {}'