Como você limpa uma consulta MySQL não executada da linha de comando?

88

Suponha que você esteja digitando uma consulta de linha de comando em um banco de dados MySQL e precise cancelar e reiniciar. Em um shell bash, você pode simplesmente digitar ctrl-c e obter um novo prompt. No MySQL, ctrl-c sai do cliente e retorna ao shell.

Por exemplo, eu tenho uma instrução SELECT longa e complexa digitada, mas ainda não pressionei return. Percebo que não quero enviar o comando, mas quero ter o comando na tela para que possa usá-lo como referência. Eu gostaria de sair sem sair do MySQL. Alguma ideia?

Ponto-chave: o comando ainda não foi executado .

Logan
fonte
10
Apenas como referência, no mysql 5.7, isso foi resolvido. Agora você pode usar ctrl-c para fazer exatamente isso.
dkniffin
A pilha LAMP é muito antiga e tem um uso muito difundido. Me confunde que demore tanto para consertar coisas que as pessoas teriam encontrado dia após dia.
ahnbizcad de
@dkniffin: Eu sei que essa é uma pergunta antiga, mas ainda está em primeiro lugar em uma pesquisa. Você poderia adicionar seu comentário como uma resposta (já é uma resposta) para ajudar a manter o tráfego?
chapéu de
@que tudo bem, eu adicionei como uma resposta
dkniffin

Respostas:

114

Digite \c.

Quando você iniciar o MySQL, provavelmente verá esta mensagem:

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

O "buffer" a que se refere é o buffer de comando / consulta.

Ruakh
fonte
7
Apenas um pequeno ponto: você deve fazer isso antes de qualquer terminador de ponto-e-vírgula.
wulftone
O bom é que na verdade não o limpa ; o que quer que seja digitado permanece visível. (Sinceramente, não teria adivinhado isso pela mensagem, e é por isso que nunca tentei.)
Michael Scheper
43

Primeiro digite Ctrl+ a, depois Ctrl+ k.

até
fonte
4
Mas o OP especificou: "Quero ter o comando na tela para poder usá-lo como referência."
ruakh
Funciona a partir da versão 5.5.40-0.
até
1
Não funciona com 5.6.28 @Ubuntu. Além disso, esta é uma sequência para encerrar a janela da tela atual.
Piohen
1
Bem, você sempre pode definir esta sequência como um atalho para isso e aquilo. É a sequência padrão no emacs e bash.
até
1
É claro que não funciona para o meu caso de uso mais comum: esqueci o ponto-e-vírgula, pressionei enter e, em vez de bagunçar meu histórico com duas linhas desnecessárias, prefiro reescrever o comando corretamente.
quazgar de
18

Use um dos seguintes atalhos para excluir a linha atual:

  • Digite Ctrl+ upara deletar tudo do cursor de volta ao início da linha
  • Digite Ctrl+ kpara deletar tudo desde o cursor até o final da linha

Caso contrário, conforme já indicado, digite \cno final da linha atual (um atalho para o clearcomando) e pressione Enter.

Bladerz
fonte
0

Se for um comando longo, eu geralmente uso a seta para o início do comando e adiciono algo sem sentido, então ele não será executado, mas posso usar a seta para cima e obter acesso sem precisar redigitá-lo. Caso contrário, se você quiser não executá-lo, basta clicar na seta para cima e ele deve rolar pelo seu histórico de comandos. Encontre um comando curto, pressione backspace e digite o que quiser.

Mike Purcell
fonte
0

Depende dos atalhos de teclado do seu shell. Você pode pressionar home ou qualquer sequência de teclas que usar para voltar ao início, prefixar sua consulta com X ou qualquer coisa para torná-la sintaticamente inválida, pressionar enter e você está bem

atxdba
fonte
0

Se você veio aqui esperando encontrar a mesma resposta no Transact-SQL, digite RESET

Post Impatica
fonte
0

No mysql 5.7, isso foi resolvido. Agora você pode fazer ctrl-cpara sair da linha de comando SQL.

dkniffin
fonte