While debugging SQL statements, if I accidentally execute a query in using the mysql command line that outputs at lot of results (even if the query itself executes in reasonable time), the only way I know of to stop the endless stream of output is CTRL-C.
Unfortunately this puts me back in the shell, forcing me to login and select the database again.
To avoid this I've started running mysql with the --sigint-ignore option so that CTRL-C is ignored.
Now I'd like a way to interrupt the output of those long queries.
Is there a keyboard shortcut that will do this?
Use
mysql --sigint-ignore
and to clear a line, use control+U
Bit late, but maybe my answer will help someone.
A way to kill a concrete mysql query through the command line is:
From the current mysql docs:
Since I was using version 5.0.67 seems that updating mysql would be the best fix. However I have accepted Schwern's answer because it was quick to implement and works like a dream.
You can use
--pager
to have your output passed to a pager such asless
which will give you control over the output. Not just killing it, but also paging, searching and even storing the output better than your terminal window gives you.There's also the
--safe-updates
or-U
switch aka--i-am-a-dummy
which protects you from clauselessupdate
s anddelete
s and also auto limits selects to 1000 (modifyable with select_limit).All of this can be set by default in
~/.my.cnf
.Not a keyboard shortcut.
The only choice is to open another session, use SHOW PROCESSLIST and then KILL QUERY the one you want to terminate.
You can also use the
mysqladmin
command-line tool to issue these commands.Either way, it requires you to login. So it's not much of an advantage over just hitting Ctrl-C.