Ho commesso un errore durante la scrittura di un comando al prompt dei comandi di SQLite, che ora voglio interrompere, ecco come appare la mia riga di comando

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

In questo caso, probabilmente perché ho aperto una citazione, non posso “nemmeno premere ENTER per eseguire il comando. basta ottenere una continuazione della riga, che sarebbe comunque tuttaltro che ideale perché dovrei eseguire codice errato e causa ed errore, solo per riprendere il controllo del prompt.
Come posso annullare la riga / comando e tornare indietro a un prompt?

Commenti

  • Forse ^ D chiuderà lo stdin per sqlite e lo farà uscire …
  • @Ralph ctrl D fa sì che sqlite esca dallintera sessione, inclusa la perdita di qualsiasi database in memoria, se è possibile che ne esegua uno.

Risposta

Linterfaccia sqlite3 utilizza la libreria ReadLine per la modifica della riga di comando. Puoi cancellare unintera riga con h Ctrl + U ma una volta premuto Invio , la riga è stata accettata e non è più modificabile.

Dato che hai notato , linvio di Ctrl + D richiederà al client di uscire, che non è quello che desideri.

La soluzione migliore è

  1. chiudere qualsiasi stringa e quindi,
  2. prima di emettere un ; finale, generare un errore di sintassi intenzionale.

Nel tuo esempio:

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

Questo assicurerà che nulla venga eseguito e ti lascerà nella sessione SQLite con qualsiasi tabella temporanea intatta.

Commenti

  • grazie, sì, ho pensato che potrebbe essere la soluzione migliore
  • Se hai premuto inserisci dopo un tasto freccia, cioè hai qualcosa come > ^[[A e poi ...>, quindi devi chiudere le parentesi per annullarlo: > ]];. Dovrebbe davvero supportare Ctrl + C per questo. ' è odioso in questo modo.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *