mysql
Linux 쉘에서 연결합니다 . 때때로 나는 SELECT
너무 큰 쿼리를 실행합니다 . 그것은 인쇄하고 인쇄하며 이미 이것이 내가 의도 한 것이 아님을 알고 있습니다. 쿼리를 중지하고 싶습니다.
때리면 Ctrl+C
(두 번) mysql
완전히 죽이고 다시 셸로 돌아 오므로 다시 연결해야합니다.
mysql
자체 를 죽이지 않고 쿼리를 중지 할 수 있습니까?
mysql
Linux 쉘에서 연결합니다 . 때때로 나는 SELECT
너무 큰 쿼리를 실행합니다 . 그것은 인쇄하고 인쇄하며 이미 이것이 내가 의도 한 것이 아님을 알고 있습니다. 쿼리를 중지하고 싶습니다.
때리면 Ctrl+C
(두 번) mysql
완전히 죽이고 다시 셸로 돌아 오므로 다시 연결해야합니다.
mysql
자체 를 죽이지 않고 쿼리를 중지 할 수 있습니까?
답변:
mysql>show processlist;
mysql> kill "number from first col";
mysql
내가 프롬프트 볼 수 없습니다 ... 인쇄되어
KILL QUERY
것이 약간 바람직 하다고 생각 KILL
합니다. 그렇게하면 쿼리가 종료되지만 연결은 종료되지 않습니다.
KILL
없지만 다음을 실행할 수 있습니다.CALL mysql.rds_kill(12345)
mysql에 연결
mysql -uusername -p -hhostname
전체 프로세스 목록 표시 :
mysql> show full processlist;
+---------+--------+-------------------+---------+---------+------+-------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+---------+--------+-------------------+---------+---------+------+-------+------------------+
| 9255451 | logreg | dmin001.ops:37651 | logdata | Query | 0 | NULL | show processlist |
+---------+--------+-------------------+---------+---------+------+-------+------------------+
특정 쿼리를 종료하십시오. 여기에서 id = 9255451
mysql> kill 9255451;
권한이 거부되면 다음 SQL을 시도하십시오.
CALL mysql.rds_kill(9255451)
mysqladmin
사용 가능한 경우 다음을 사용하여 쿼리 목록을 얻을 수 있습니다.
> 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 |
+-----+------+-----------------+--------+---------+------+--------------+------------------+
그런 다음 장기 실행 쿼리를 호스팅하는 mysql 프로세스를 중지 할 수 있습니다.
> mysqladmin -uUSERNAME -pPASSWORD kill 137
이 질문의 저자는 일반적으로 MySQL이 출력을 인쇄 한 후에 만 잘못된 쿼리가 실행되었음을 인식한다고 언급합니다. 언급 한 바와 같이,이 경우 Ctrl-C
에는 도움이되지 않습니다. 그러나 출력이 인쇄 되기 전에 쿼리 를 잡으면 현재 쿼리가 중단 된다는 것을 알았습니다
. 예를 들면 다음과 같습니다.
mysql> select * from jos_users, jos_comprofiler;
MySQL은 위의 두 테이블의 카티 전 곱 생성으로 바쁘고 곧 MySQL이 화면에 출력을 인쇄하지 않았으므로 (프로세스 상태는 데이터 전송 중 ) 다음과 같이 입력합니다 Ctrl-C
.
Ctrl-C -- sending "KILL QUERY 113240" to server ...
Ctrl-C -- query aborted.
ERROR 1317 (70100): Query execution was interrupted
Ctrl-C
마찬가지로 UPDATE
쿼리 를 중지하는 데 사용할 수 있습니다.