如何停止正在執行的 MySQL 查詢?


在停止正在執行的 MySQL 查詢之前,首先我們需要使用 show 命令檢視有多少程序正在執行。

該查詢如下所示:

mysql> show processlist;

執行上述查詢後,我們將獲得一些帶有 ID 的輸出。如下所示:

+----+-----------------+-----------------+----------+---------+-------+------------------------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+-----------------+-----------------+----------+---------+-------+------------------------+------------------+
| 4 | event_scheduler | localhost | NULL | Daemon | 71034 | Waiting on empty queue |
NULL |
| 8 | Manish | localhost:53496 | business | Query | 0 | starting |show processlist|
+----+-----------------+-----------------+----------+---------+-------+------------------------+------------------+
2 rows in set (0.00 sec)

從上面的輸出可以看到,當前使用的資料庫是“business”,其 ID 為 8。要停止查詢,可以使用帶有程序列表中給定 ID 的命令呼叫。其語法如下所示:

call mysql.rds_kill(valueOfGivenIdInProcesslist);

現在,將上述語法應用於查詢,並將 valueOfGivenIdInProcesslist 設定為 8。如下所示:

mysql> CALL mysql.rds_kill(8);

執行上述查詢後,將獲得以下輸出:

ERROR 2013 (HY000): Lost connection to MySQL server during query

發生這種情況是因為上述查詢停止執行。使用 use 命令檢查它是否已停止。其語法如下所示:

use yourDatabaseName;

將上述語法應用於系統中的 mydatabase 名稱“business”。查詢如下所示:

mysql> use business;

執行上述查詢後,將獲得以下輸出:

No connection. Trying to reconnect...
Connection id: 10
Current database: *** NONE ***



Database changed
mysql>

因此,很明顯查詢已停止,因為 MySQL 中出現了“正在嘗試重新連線…”的訊息。並且它還顯示當前資料庫為“none”。一段時間後,與資料庫的連線恢復。

更新於: 2020-06-24

959 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.