Eu cometi um erro ao escrever um comando no prompt de comando SQLite, que agora desejo abortar, esta é a aparência da minha linha de comando

sqlite> select * from todos" ...> " ...> ;^C 

Neste caso, provavelmente porque abri uma citação, não consigo nem mesmo clicar em ENTER para executar o comando. apenas obter uma continuação de linha, que ainda seria menos do que ideal porque eu estaria tendo que executar um código ruim e causa e erro, apenas para recuperar o controle do prompt.
Como posso cancelar a linha / comando e voltar a um prompt?

Comentários

  • Talvez ^ D feche o stdin para sqlite e faça com que saia …
  • @Ralph ctrl D faz o sqlite sair de toda a sessão, incluindo a perda de qualquer banco de dados de memória – se você tiver que estar executando algum.

Resposta

A interface sqlite3 usa a biblioteca ReadLine para edição de linha de comando. Você pode apagar uma linha inteira sagacidade h Ctrl + U mas assim que você pressionou Enter , a linha foi aceita e não é mais editável.

Conforme você “ve notado , enviar Ctrl + D fará com que o cliente saia, o que não é o que você deseja.

Sua melhor aposta é

  1. fechar qualquer string e, então,
  2. antes de emitir um ; final, gerar um erro de sintaxe deliberado.

No seu exemplo:

sqlite> select * from todos" ...> " ...> *** I made a mistake ...> ; Error: near "*": syntax error sqlite> 

Isso garantirá que nada seja executado e deixará você na sessão SQLite com as tabelas temporárias intactas.

Comentários

  • obrigado, sim, pensei que seria a melhor solução alternativa
  • Se você pressionou digite depois de uma tecla de seta, ou seja, você tem algo como > ^[[A e, em seguida, ...>, então você tem que fechar os colchetes para cancelar isso: > ]];. Realmente deve suportar Ctrl + C para isso. É ' desagradável dessa forma.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *