Jag gjorde ett misstag när jag skrev ett kommando vid SQLite-kommandotolken, som jag nu vill avbryta, så ser min kommandorad ut

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

I det här fallet, troligtvis för att jag har öppnat en offert, kan jag inte ens slå ENTER för att köra kommandot. få bara en linjefortsättning, det skulle ändå vara mindre än idealt för att jag skulle behöva köra dålig kod och orsak och fel, bara för att återfå kontrollen av prompten.
Hur kan jag avbryta raden / kommandot och få tillbaka tillbaka till en uppmaning?

Kommentarer

  • Kanske ^ D stänger stdin för sqlite och gör att den avslutas …
  • @Ralph ctrl D gör att sqlite lämnar hela sessionen, inklusive att förlora några i minnesdatabaser – om du vill köra någon.

Svar

sqlite3 gränssnittet använder ReadLine-biblioteket för kommandoradsredigering. Du kan radera en hel rad med h Ctrl + U men när du har tryckt på Enter har raden accepterats och kan inte längre redigeras.

När du har märkt , att skicka Ctrl + D kommer att uppmana klienten att avsluta, vilket inte är vad du vill.

Din bästa satsning är att

  1. stänga vilken sträng som helst och sedan
  2. innan ett sista ; skapas ett avsiktligt syntaxfel.

I ditt exempel:

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

Detta kommer att säkerställa att ingenting körs och det kommer att lämna dig i SQLite-sessionen med alla tillfälliga tabeller intakta.

Kommentarer

  • tack, ja jag trodde att det kan vara den bästa lösningen
  • Om du har tryckt ange efter en piltangent, dvs du har något som > ^[[A och sedan ...>, sedan måste du stänga parenteserna för att avbryta det: > ]];. Det borde verkligen stödja Ctrl + C för detta. Det ' är motbjudande på det här sättet.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *