Linha de comando do SQLite3: como você cancela um comando?

6

Eu cometi um erro ao escrever um comando no prompt de comando do SQLite, que agora quero anular, é assim que minha linha de comando aparece

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

Nesse caso, provavelmente porque abri uma cotação, não consigo nem atingir ENTER para executar o comando. Acabei de obter uma continuação de linha, que ainda seria menos do que ideal, porque eu teria que executar código incorreto e causa e erro, apenas para recuperar o controle do prompt.
Como posso cancelar a linha / comando e voltar ao prompt?

    
por the_velour_fog 21.06.2016 / 10:33

2 respostas

8

A interface sqlite3 usa a biblioteca ReadLine para edição da linha de comando. Você pode apagar uma linha completa com Ctrl + U mas depois de pressionar Enter , a linha foi aceita e não é mais editável (bem, é, mas não como parte da declaração atual).

Como você notou, enviar o fim do arquivo com Ctrl + D solicitará ao cliente que saia, o que não é o que você deseja.

Sua melhor aposta é para

  1. feche qualquer string e, em seguida,
  2. antes de emitir um% final;, gere um erro de sintaxe.

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 do SQLite com tabelas temporárias intactas.

    
por 21.06.2016 / 11:16
0

Eu sei que esta é a placa Unix / Linux, mas este segmento específico surge para os resultados de pesquisa do MS Windows do problema. Esta resposta está sendo direcionada para usuários do SQLite do MS Windows.

  • Se você for avançado o suficiente para ter várias tabelas abertas e entrar nessa situação, estará sozinho.

  • Novatos no Windows, você provavelmente está usando uma tabela, um comando no momento. A primeira coisa que você deve fazer quando estiver preso assim é dar uma olhada na consulta que está tentando executar. Provavelmente é apenas uma correção simples, como fechar aspas duplas da maneira certa. Vai fazer bem para descobrir isso. Parar o banco de dados quando não há consultas ativas é bastante seguro, e você fez o backup de qualquer maneira.

  • Novatos mais uma vez, quando você iniciar o SQLite, faça isso em um prompt aberto, não apenas " windows-key execute" o SQLite de alguma forma. Melhor ainda, abra-o com o arquivo de lote mais simples que você pode escrever. Estas são camadas que irão ajudá-lo. Dessa forma, se você acabar tendo que CTRL + C a coisa que você ainda estará no prompt.

    Aqui está a parte engraçada: Mesmo quando você está no SQLite, ele está sendo executado através do processador de comandos do Windows. Se você matar o prompt sqlite, seu histórico de comandos ainda estará lá, com falhas e tudo. Sério, quando você está de volta ao prompt de comando, antes de reiniciar o sqlite, role para cima no histórico doskey, você encontrará um monte de comandos que o shell não irá interpretar porque são sqlite.

    Basta iniciar o sqlite novamente, manualmente no prompt, use seu julgamento como fazê-lo. Alguns segundos depois, você pode rolar de volta para onde você estragou o comando e consertá-lo.

por 23.07.2018 / 17:56