Correção Control-C no programa de linha de comando mysql?

10

Na linha de comando mysql , pressionar Control-C cancelará o programa e retornará ao bash. Em psql , aquele para postgres, ele irá matar a consulta atual e não irá parar o programa psql. Existe alguma maneira de obter o comportamento do estilo psql para Control-C no programa mysql? Eu continuo encontrando-me pressionando Control-C pelo hábito e tendo que voltar ao mysql.

O Control C não mata o bash, e faz o logout quando você o pressiona. O que eu acho que é uma coisa boa. Control-C significa 'pare o que você está fazendo'.

    
por Rory 15.07.2009 / 11:24

4 respostas

7

Se você pressione Ctrl-C em 5.1 durante a execução da consulta , interromperá a execução com a mensagem "A execução da consulta foi interrompida"

    mysql> INSERT INTO c SELECT rand()*1000, sha1(rand()) FROM c;
    Query aborted BY Ctrl+C
    ERROR 1317 (70100): Query execution was interrupted

Uma outra pressão Ctrl-C mata o cliente.

Versões mais antigas morrem horrivelmente como mencionado, então atualize se possível:)

Editar:

Parece que foi adicionado em 5.0.25 (e 5.1. 10).

    
por 15.07.2009 / 12:16
13

Como o Andy diz, ele foi corrigido em versões posteriores.

Não há atalhos de teclado equivalentes em versões mais antigas.

Mas você pode impedir que isso aconteça com o seguinte sinalizador CLI:

--sigint-ignore

Ignore SIGINT signals (typically the result of typing Control-C).
    
por 15.07.2009 / 12:19
5

Se você adicionar um \ c ao final da sua linha em vez de usar Ctrl-c, então você pode matar a linha sem sair do mysql.

    
por 25.01.2010 / 20:16
3

Resposta curta: A partir do início de 2014 não há como ter o comportamento descrito no mysql. Veja o relatório de erros relevante e uma página em dba.stackexchange onde 3 pessoas diferentes comment que ainda não foi corrigido na v5.5 . Também, tanto quanto eu posso dizer depois de um longo googling não há nenhuma solução vale a pena usar (veja abaixo porque - sig-ignorar não é bom). A resposta de Andy foi editada para mencionar que "Parece que foi adicionado em 5.0.25 (e 5.1.10)." mas ele provavelmente foi enganado por comentário com data [3 de maio de 2006 19:04] no relatório de bug acima mencionado.

O argumento --sigint-ignore (veja a resposta de Dan Carley) irá de fato impedir que o mysql o retorne ao shell quando você pressionar ctrl-C, mas também removerá a capacidade de parar consultas longas .

Esse é o tipo de bugs de usabilidade que faz você ir :-( Realmente óbvio e provavelmente extremamente fácil de consertar, mas ainda assim acontece depois de muitos anos.

    
por 14.04.2014 / 10:24