Jeg gjorde en feil med å skrive en kommando ved SQLite-ledeteksten, som jeg nå vil avbryte, slik ser kommandolinjen ut

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

I dette tilfellet, sannsynligvis fordi jeg har åpnet et tilbud, kan jeg ikke engang treffe ENTER for å kjøre kommandoen. bare få en linjefortsetting, det vil fremdeles være mindre enn ideelt fordi jeg må kjøre dårlig kode og årsak og feil, bare for å få tilbake kontrollen over meldingen.
Hvordan kan jeg avbryte linjen / kommandoen og komme tilbake til en melding?

Kommentarer

  • Kanskje ^ D lukker stdin for sqlite og får den til å avslutte …
  • @Ralph ctrl D får sqlite til å avslutte hele økten, inkludert å miste noen i minnedatabaser – hvis du ønsker å kjøre noen.

Svar

sqlite3 grensesnittet bruker ReadLine-biblioteket for redigering av kommandolinjen. Du kan slette en full linje med h Ctrl + U men når du har trykket på Enter , er linjen akseptert og kan ikke lenger redigeres.

Da du har lagt merke til , ved å sende Ctrl + D blir kunden bedt om å avslutte, og det er ikke det du vil.

Det beste alternativet er å

  1. lukke en hvilken som helst streng, og deretter,
  2. før du utsteder en endelig ;, genererer en bevisst syntaksfeil.

I eksempelet ditt:

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

Dette vil sikre at ingenting blir utført, og det vil forlate deg i SQLite-økten med eventuelle midlertidige tabeller intakte.

Kommentarer

  • takk, ja jeg trodde det kan være den beste løsningen
  • Hvis du har trykket skriv inn etter en piltast, dvs. at du har noe sånt som > ^[[A og deretter ...>, så må du lukke parentesene for å avbryte det: > ]];. Det burde virkelig støtte Ctrl + C for dette. Det ' er motbydelig på denne måten.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *