Jak Mogę zatrzymać uruchomione zapytanie MySQL?
Podłączam się do mysql
z mojej powłoki Linuksa. Co jakiś czas uruchamiam SELECT
zapytanie, które jest zbyt duże. Drukuje i drukuje i już wiem, że nie o to mi chodziło. Chciałbym przerwać to zapytanie.
Uderzenie Ctrl+C
(kilka razy) zabija mysql
całkowicie i zabiera mnie z powrotem do shell, więc muszę się ponownie połączyć.
Czy możliwe jest zatrzymanie zapytania bez zabijania samego mysql
?
6 answers
mysql>show processlist;
mysql> kill "number from first col";
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-05 23:07:58
Wystarczy dodać
KILL QUERY **Id**
gdzie Id jest identyfikatorem połączenia z show processlist
Jest bardziej korzystne, jeśli nie chcesz zabić połączenia zwykle podczas uruchamiania z jakiejś aplikacji.
Po Więcej Szczegółów możesz przeczytać mysql doc tutaj
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-12-22 12:32:22
Połącz się z mysql
mysql -uusername -p -hhostname
Pokaż pełną listę procesów:
mysql> show full processlist;
+---------+--------+-------------------+---------+---------+------+-------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+---------+--------+-------------------+---------+---------+------+-------+------------------+
| 9255451 | logreg | dmin001.ops:37651 | logdata | Query | 0 | NULL | show processlist |
+---------+--------+-------------------+---------+---------+------+-------+------------------+
Zabij konkretne zapytanie. Tutaj id=9255451
mysql> kill 9255451;
Jeśli nie masz uprawnień, spróbuj użyć tego SQL:
CALL mysql.rds_kill(9255451)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-29 07:09:07
Użyj mysqladmin
, aby zabić uciekające zapytanie:
Uruchom następujące polecenia:
mysqladmin -uusername -ppassword pr
Następnie zanotuj identyfikator procesu.
mysqladmin -uusername -ppassword kill pid
Uciekające zapytanie nie powinno już zużywać zasobów.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-28 22:07:38
Jeśli masz mysqladmin
dostępne, możesz otrzymać listę zapytań z:
> mysqladmin -uUSERNAME -pPASSWORD pr
+-----+------+-----------------+--------+---------+------+--------------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+-----+------+-----------------+--------+---------+------+--------------+------------------+
| 137 | beet | localhost:53535 | people | Query | 292 | Sending data | DELETE FROM |
| 145 | root | localhost:55745 | | Query | 0 | | show processlist |
+-----+------+-----------------+--------+---------+------+--------------+------------------+
Następnie możesz zatrzymać proces mysql, który jest hostem długo działającego zapytania:
> mysqladmin -uUSERNAME -pPASSWORD kill 137
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-23 15:29:20
Autor tego pytania wspomina, że zwykle dopiero po
MySQL wypisuje swoje wyjście, że zdaje sobie sprawę, że złe zapytanie zostało wykonane.
Jak wspomniano, w tym przypadku Ctrl-C
nie pomaga. Zauważyłem jednak, że
przerywa bieżące zapytanie - Jeśli złapiesz je przed każde wyjście jest
drukowane. Na przykład:
mysql> select * from jos_users, jos_comprofiler;
MySQL jest zajęty generowaniem iloczynu kartezjańskiego powyższych dwóch tabel i
szybko zauważysz, że MySQL nie wydrukował żadnego wyjścia na ekran (proces
stan to wysyłanie danych ) więc wpisujesz Ctrl-C
:
Ctrl-C -- sending "KILL QUERY 113240" to server ...
Ctrl-C -- query aborted.
ERROR 1317 (70100): Query execution was interrupted
Ctrl-C
można również użyć do zatrzymania zapytania UPDATE
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-12-16 09:25:49