Hibát követtem el, amikor egy parancsot írtam az SQLite parancssorba, amelyet most meg akarok szakítani, így néz ki a parancssorom

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

Ebben az esetben valószínűleg azért, mert kinyitottam egy ajánlatot, még a ENTER -t sem tudom elfuttatni a parancs futtatásához. csak kapjon egy sort, ez még mindig kevesebb, mint az ideális, mert hibás kódot és okokat és hibákat kellene futtatnom, csak hogy visszanyerjem a parancs ellenőrzését.
Hogyan törölhetem a sort / parancsot és visszaküldhetem egy prompthoz?

Megjegyzések

  • Lehet, hogy a ^ D bezárja az sqlite stdin-t és kilép …
  • A @Ralph ctrl D hatására az sqlite kilép az egész munkamenetből, beleértve a memória adatbázisok bármelyikének elvesztését is – ha úgy gondolja, hogy futtat.

Válasz

A sqlite3 kezelőfelület a ReadLine könyvtárat használja a parancssori szerkesztéshez. Törölhet egy teljes sort h Ctrl + U , de miután megnyomta az Enter gombot, a sor elfogadásra került és már nem szerkeszthető.

Ahogy “ve észrevette , a Ctrl + D küldésével a kliens kilépésre ösztönöz, amit nem szeretnél.

A legjobb fogadás az, hogy

  1. zárjon be minden karaktersorozatot, majd
  2. mielőtt kiadna egy végső ;, szándékos szintaktikai hibát generál. / li>

A példádban:

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

Ez biztosítja, hogy semmi sem kerüljön végrehajtásra, és az SQLite munkamenetben marad bármilyen ideiglenes tábla sértetlen.

Megjegyzések

  • köszönöm, igen, azt gondoltam, hogy ez lehet a legjobb megoldás
  • Ha megnyomta egy nyíl gomb után írja be, azaz van valami, például > ^[[A, majd ...>, majd a zárójelek bezárásával törölheti ezt: > ]];. Ehhez valóban támogatnia kell a Ctrl + C billentyűkombinációt. ' így kellemetlen.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük