Jak usunąć niezrealizowane zapytanie MySQL z wiersza poleceń?

88

Załóżmy, że wpisujesz zapytanie w wierszu poleceń do bazy danych MySQL i musisz anulować i zacząć od nowa. Z powłoki bash możesz po prostu wpisać ctrl-c i otrzymać nowy znak zachęty. W MySQL, ctrl-c zamykało klienta i wracało do powłoki.

Na przykład mam wpisaną długą, złożoną instrukcję SELECT, ale jeszcze nie wcisnąłem powrotu. Zdaję sobie sprawę, że nie chcę wysyłać polecenia, ale chcę, aby polecenie było na ekranie, aby móc użyć go jako odniesienia. Chciałbym wyskoczyć bez wychodzenia z MySQL. Jakieś pomysły?

Kluczowy punkt: polecenie nie zostało jeszcze wykonane .

Logan
źródło
10
Jako odniesienie, w mysql 5.7 ten problem został rozwiązany. Możesz teraz zrobić ctrl-c, aby zrobić dokładnie to.
dkniffin
Stos LAMP jest tak stary i ma tak szerokie zastosowanie. Zdumiewa mnie, że tak długo zajmuje im naprawianie rzeczy, na które ludzie napotykaliby dzień po dniu.
ahnbizcad
@dkniffin: Wiem, że to stare pytanie, ale nadal zajmuje pierwsze miejsce w wyszukiwaniu. Czy możesz dodać swój komentarz jako odpowiedź (to już odpowiedź), aby pomóc w ciągłym ruchu?
kapelusz
@ W porządku, dodałem to jako odpowiedź
dkniffin

Odpowiedzi:

114

Wpisz \c.

Po uruchomieniu MySQL prawdopodobnie zobaczysz ten komunikat:

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

„Bufor”, do którego się odnosi, to bufor poleceń / zapytań.

ruakh
źródło
7
Tylko mała uwaga: musisz to zrobić przed jakimkolwiek zakończeniem średnika.
wulftone
Fajne jest to, że w rzeczywistości tego nie wyjaśnia ; wszystko, co zostało wpisane, pozostaje widoczne. (Szczerze mówiąc, nie odgadłbym tego z wiadomości, dlatego nigdy nie próbowałem.)
Michael Scheper
43

Najpierw wpisz Ctrl+ a, a następnie Ctrl+ k.

do
źródło
4
Ale OP określił: „Chcę, aby polecenie było wyświetlane na ekranie, więc mogę użyć go jako odniesienia”.
ruakh
Działa od wersji 5.5.40-0.
do
1
Nie działa z 5.6.28 @Ubuntu. Poza tym jest to sekwencja do zabicia bieżącego okna ekranu.
Piohen
1
Cóż, zawsze możesz ustawić tę sekwencję jako skrót do tego i tamtego. Jest to domyślna sekwencja w emacsie i bashu.
do
1
Oczywiście nie działa w moim najczęstszym przypadku użycia: zapomniałem średnika, nacisnąłem enter i zamiast zaśmiecać moją historię niepotrzebnym dwuwierszowym tekstem, wolę przepisać polecenie poprawnie.
quazgar
18

Użyj jednego z następujących skrótów, aby usunąć bieżącą linię:

  • Wpisz Ctrl+, uaby usunąć wszystko od kursora z powrotem do początku linii
  • Wpisz Ctrl+, kaby usunąć wszystko od kursora do końca linii

W przeciwnym razie, jak już wskazano, wpisz \cna końcu bieżącego wiersza (skrót do clearpolecenia), a następnie naciśnij Enter.

bladerz
źródło
0

Jeśli jest to długie polecenie, zwykle kieruję strzałkę do początku polecenia i dodaję bełkot, aby nie zostało wykonane, ale mogę nacisnąć strzałkę w górę i uzyskać dostęp bez konieczności ponownego wpisywania. W przeciwnym razie, jeśli nie chcesz go wykonywać, po prostu naciśnij strzałkę w górę, aby przewinąć historię poleceń. Znajdź krótkie polecenie, naciśnij klawisz Backspace, a następnie wpisz, co chcesz.

Mike Purcell
źródło
0

Zależy od przypisań klawiszy twojej powłoki. Możesz nacisnąć home lub jakąkolwiek sekwencję klawiszy, której używasz, aby wrócić na początek, poprzedzić zapytanie X lub cokolwiek, aby uczynić je niepoprawnym składniowo, nacisnąć Enter i jesteś dobry

atxdba
źródło
0

Jeśli przyszedłeś tutaj z nadzieją, że znajdziesz tę samą odpowiedź w Transact-SQL, wpisz RESET

Post Impatica
źródło
0

W mysql 5.7 ten problem został rozwiązany. Możesz teraz ctrl-cwyjść z wiersza poleceń SQL.

dkniffin
źródło