Am 02.12.2014 18:31, schrieb Johan De Meersman:
> ----- Original Message -----
>> From: "wharms" <wha...@bfs.de>
>> Subject: signal handling in mysql cli
>>
>> when i use CTRL-C to break a query that works fine in interactive mode.
>>
>> but when i use the noninteractive mode
>> i looks like that  but "show full processlist;" shows otherwise and that is 
>> true
> 
> This may sound silly, but you're basically saying that you can't interact 
> with it while in non-interactive mode...
> 
> My understanding may be wrong, but this is how it works in my mind:
>  * when in the client, the client intercepts the ctrl-c and interprets it as 
> "kill this query on the server".
>  * when in non-interactive mode, the client is not actually reading your 
> keypresses. Thus, the ctrl-c gets intercepted by the *shell*, which does 
> exactly what you ask by killing the MySQL client process.
> 
> Now, if the mysql client does not explicitly intercept kill signals - which, 
> honestly, most programs have no reason to - that means it doesn't even get a 
> chance to send the "cancel that query" order, it just dies.
> 
> A lot of debate could be put in on wether or not the client needs to 
> intercept and send a cancel, but personally I'm leaning towards "no, it 
> doesn't" - if you don't have a transaction open, or don't even have a 
> transactional engine (which used to be default!) cancelling would leave your 
> database in an inconsistent state. Much better, then, to allow whatever query 
> you sent to continue, on the off chance that it's something that it does not 
> damage, or only does things that you can reverse afterwards. If you really 
> want to kill that query, you always have the option of logging into the 
> server and shooting it yourself.
> 

In Unix pressing CTRL-C should be the same a sending a INTR.
You can see this with stty -a what key is map to what signal.

NTL the question is: how can the user stop the query what was started with a 
script ?

re,
 wh



-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/mysql

Reply via email to