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 .


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ń.


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.


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.


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.


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


0

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


0

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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.