Há algo no console do MySQL que me deixa louco. Quando pressiono ctrl+ cpara cancelar o comando atual que está sendo digitado, o terminal sai.
Em todos os terminais que conheço ( *nix
terminais, Python
, PostgreSQL
), ctrl+ ccancela o comando atual e ctrl+ dsai do terminal.
Esse problema foi relatado em 2003 e foi corrigido várias vezes desde então.
Existe uma maneira de:
- Mude este comportamento, ou
- Convencer a equipe de desenvolvimento do MySQL de que isso é realmente irritante?
Pelo menos a versão 5.6.14 do cliente tem a opção --sigint-ignore para ignorar totalmente o manipulador SIGINT. Parece que foi adicionado em 7 de outubro de 2004 - então já faz um tempo, pelo menos. Acabei de testá-lo e impede que o CTRL-C cancele o cliente MySQL. No entanto, seria bom se CTRL-C também cancelasse o buffer de linha de comando atual, como faz no shell BASH - como faz a CLI do PostgreSQL. Eu bifurquei o MySQL para ver o quão difícil seria implementar algo assim. Vou postar uma fórmula Homebrew com um link tarball quando/se estiver pronto.
ATUALIZAÇÃO 1 Já teve um daqueles dias? Criei o patch prometido , e então resolvi fazer um vídeo para demonstrá-lo. Funcionou! No entanto, não consegui desativá-lo! Bem, acontece que o MySQL realmente incorporou a funcionalidade ao cliente principal no ano passado ! Sim, o A para este Q é baixar pelo menos o cliente MySQL 5.7.3-794-g901d27f. Tem a funcionalidade que todos desejamos.
EXEMPLO Na linha de comando, basta adicionar o sinalizador --sigint-ignore:
Ou, faça como eu fiz e crie um arquivo de configuração do MySQL para sua conta de usuário em
$HOME/.my.cnf
(%USERPROFILE%/.my.cnf
no Windows) com o seguinte conteúdo:Isso garantirá que todas as
mysql
execuções ignorem o irritante Ctrl-C e se comportem como um bom cliente SQL.Embora o comportamento ctrl+ seja irritante, você ainda pode usá-lo para cancelar a consulta atual. Você só precisa se treinar para usar mysql CLI, em vez de + !c
\c
\c
ctrlcBoas notícias: a funcionalidade ^C do MySQL foi finalmente corrigida por #66583 .
No changelog 5.7.0 :
Para alterar o comportamento, faça o download da fonte para a CLI do mysql e modifique o
SIGINT
manipulador para se comportar como achar melhor, então recompile e instale.Qual versão do cliente você está usando? Lembro que esse é o comportamento mais antigo, mas as versões recentes de 5.1 e 5.5 parecem apenas cancelar o comando em execução sem sair do cliente. Então, novamente, pode ser que eu esteja usando as compilações Percona. Você pode tentar apenas executar o cliente deles, se for o caso.