Popełniłem błąd, pisząc polecenie w wierszu poleceń SQLite, które teraz chcę przerwać, tak wygląda moja linia poleceń

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

W tym przypadku, prawdopodobnie dlatego, że otworzyłem ofertę, nie mogę nawet nacisnąć ENTER, aby uruchomić polecenie. I po prostu uzyskaj kontynuację wiersza, co nadal byłoby mniej niż idealne, ponieważ musiałbym uruchomić zły kod i przyczynić się do błędu, aby odzyskać kontrolę nad monitem.
Jak mogę anulować wiersz / polecenie i wrócić do monitu?

Komentarze

  • Może ^ D zamknie standardowe wejście dla sqlite i zamknie je …
  • @Ralph ctrl D sprawia, że sqlite kończy całą sesję, łącznie z utratą wszystkich baz danych w pamięci – jeśli zdarzyło ci się, że są uruchomione.

Odpowiedz

Interfejs sqlite3 korzysta z biblioteki ReadLine do edycji wiersza poleceń. Możesz wymazać całą linię h Ctrl + U ale po naciśnięciu Enter linia została zaakceptowana i nie można jej już edytować.

Jak już zauważyłem , wysłanie Ctrl + D zachęci klienta do wyjścia, co nie jest tym, czego chcesz.

Najlepiej jest

  1. zamknąć dowolny ciąg, a następnie
  2. przed wydaniem końcowego ; wygenerować celowy błąd składni.

W Twoim przykładzie:

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

Zapewni to, że nic nie zostanie wykonane i pozostawi Cię w sesji SQLite z nietkniętymi tabelami tymczasowymi.

Komentarze

  • dziękuję, tak, pomyślałem, że to najlepsze rozwiązanie.
  • Jeśli nacisnąłeś wprowadź po klawiszu strzałki, czyli masz coś takiego jak > ^[[A, a następnie ...>, a następnie musisz zamknąć nawiasy, aby anulować: > ]];. Naprawdę powinien obsługiwać Ctrl + C do tego. W ten sposób ' jest nieprzyjemny.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *