Ik heb een fout gemaakt bij het schrijven van een commando bij de SQLite-opdrachtprompt, die ik nu wil afbreken, zo ziet mijn opdrachtregel eruit
sqlite> select * from todos" ...> " ...> ;^C
In dit geval kan ik, waarschijnlijk omdat ik een citaat heb geopend, “zelfs niet op ENTER
drukken om de opdracht uit te voeren. I krijg gewoon een regel voortzetting, dat zou nog steeds niet ideaal zijn omdat ik slechte code en oorzaak en fout zou moeten uitvoeren, alleen om de controle over de prompt terug te krijgen.
Hoe kan ik de regel / het commando annuleren en terugkrijgen naar een prompt?
Reacties
Antwoord
De sqlite3
-interface gebruikt de ReadLine-bibliotheek voor het bewerken van de opdrachtregel. U kunt een volledige regel wissen met h Ctrl + U maar als je eenmaal op Enter hebt gedrukt, is de regel geaccepteerd en kan deze niet meer worden bewerkt.
Zoals je hebt opgemerkt , het verzenden van Ctrl + D zal de client vragen om af te sluiten, wat niet is wat u wilt.
Uw beste gok is om
- een tekenreeks te sluiten, en vervolgens,
- alvorens een laatste
;
uit te geven, een opzettelijke syntaxisfout te genereren.
In jouw voorbeeld:
sqlite> select * from todos" ...> " ...> *** I made a mistake ...> ; Error: near "*": syntax error sqlite>
Dit zorgt ervoor dat er niets wordt uitgevoerd, en het laat je achter in de SQLite-sessie met eventuele tijdelijke tabellen intact.
Reacties
- bedankt, ja ik dacht dat dit de beste oplossing zou kunnen zijn
- Als je op voer achter een pijltoets in, dwz je hebt zoiets als
> ^[[A
en dan...>
, dan moet je de haakjes sluiten om dat te annuleren:> ]];
. Het zou hiervoor echt Ctrl + C moeten ondersteunen. Het ' is op deze manier irritant.
sqlite
en het afsluiten …