Jak wyjść z wiersza polecenia MySQL?

37

Zainstalowałem MySQL. Teraz utknąłem w wierszu polecenia MySQL. Uruchomiłem MySQL w następujący sposób:

C:\>mysql.exe
mysql>

Następnie wpisuję nieprawidłowe polecenie, takie jak to:

mysql> /version
    ->

I bez względu na to, co wpisuję, nie mogę wyjść z wiersza poleceń / terminala MySQL. Na przykład:

  • exit

  • CtrlC

  • CtrlD

  • quit

  • Ctrl\

  • CtrlZ

  • bye

Jak wyjść z terminala MySQL do domyślnego?

Eric Leschinski
źródło
1
Czy próbowałeś wyłączyć komputer? / s
VarunAgw

Odpowiedzi:

29

Aby dodać do drugiej odpowiedzi, możesz po prostu zakończyć bieżące nieprawidłowe zapytanie za pomocą średnika:

mysql> /version
    -> ;
ERROR 1064 (42000): You have an error in your SQL syntax.........
mysql> exit
Bye

c:\mysql\bin>

Lub używając \G(co ma sprawić, że wiersze będą wyświetlane pionowo):

mysql> /version
    -> ;
ERROR 1064 (42000): You have an error in your SQL syntax.........
mysql> exit
Bye

c:\mysql\bin>

Oczywiście obie opcje zakładają, że nie masz wstępnej wyceny. Jeśli to zrobisz, musisz go najpierw zakończyć cytatem końcowym.

Pacerier
źródło
To, co mnie potknęło, to to, że nie do końca rozumiem, jak terminal mysql traktuje dane wejściowe w różnych trybach cytowania, jak zdefiniowano tutaj: dev.mysql.com/doc/refman/5.0/en/entering-queries.html Istnieje 5 trybów : ->, '>, ">, `>, a /*> ja testowałem go ponownie na najnowszych wersjach, i to działało poprawnie. Wygląda to na naprawiony błąd.
Eric Leschinski
Średnik nie działa ... nic nie działa. Jeśli zrobię \ G, to działa tak, jakby opuścił ten głupi tryb ->, ale potem wraca do niego po kolejnym poleceniu. Dlaczego mysql jest taki głupi?
Amalgovinus
Prawdziwa odpowiedź brzmi: mysql cli systemu Windows jest zepsuty i może utknąć. Najłatwiejszym sposobem na Windows jest użycie git bash
Amalgovinus,
20

Dlaczego ctrl-c nie wychodzi z trybu wprowadzania MySQL w systemie Windows?

Ponieważ powiedziałeś MySQLowi, aby interpretował twoje komendy wyjścia jako prawidłowe dane wejściowe.

Co sprawia, że ​​terminal MySQL jest trudny do zrozumienia, ponieważ istnieją różne tryby dla pojedynczego cudzysłowu, podwójnego cudzysłowu i trybu normalnego.

Aby wyjść z trybu wprowadzania mysql, musisz wykonać następujące kroki:

  1. Wyjdź z trybu podwójnej wyceny.
  2. Wyjdź z trybu pojedynczej wyceny.
  3. Wyjdź z trybu mysql.
  4. Wyjdź z mysql z powrotem do domyślnego terminala.

Najbardziej podstawowy przykład:

mysql> /version
    ->
    ->
    ->
    -> \c
mysql> exit
Bye

C:\>

W powyższym przykładzie nigdy nie opuściłeś trybu domyślnego, więc polecenia wyjścia działają poprawnie.

Przykład 2 (właśnie to Cię potyka).

mysql> hello
    ->
    -> look dash is on the left"
    "> In doublequote mode now, because doublequote above
    "> adding another doublequote breaks you out: "
    -> look a single quote ' here
    '> in single quote mode now.
    '> get out, in, then out again with three singlequotes: '''
    -> now it will listen to your escape code: \c
mysql> exit
Bye

C:\>

W trybie pojedynczego cytowania lub podwójnego cudzysłowu nie są przestrzegane żadne sekwencje specjalne. Nawet Ctrl-Ci Ctrl-Dsą ignorowane w tych trybach.

W którym z 26 wszechświatów Ctrl-C nie zatrzymuje programu niezależnie od trybu? Możemy nigdy nie wiedzieć. Bazinga.

Eric Leschinski
źródło
1
Zgaduję, że cytaty uciekają od rzeczy i czeka na więcej informacji. To naprawdę ma sens, gdy możesz przechowywać coś takiego jak „wyjście” w bazie danych
Journeyman Geek
@Eric, podczas gdy Ctrl-D nie działa, gdy jesteś w trybie cytowania, Ctrl-C nadal działa, jeśli używasz starszych klientów, takich jak mysql 5.5.43 i mysql 5.1.73. Testowane na zwycięstwo 8.1.
Pacerier
Ctrl-c wciąż nie pozostawia mi tego. Nigdy nie dostaję komunikatu „pa”. Co więcej, kiedy jestem w trybie ->, jedyne, co mogę zrobić, to Ctrl + C, aby wyjść? Absolutnie nic innego nie otrzymuje odpowiedzi od tłumacza. MySQL jest w większości przypadków intuicyjny, ale nie jest to jeden z takich przypadków.
Amalgovinus,
Być może emulator terminala pożera kody Ctrl i wysyła inny kod dostępu do procesu, który interpretuje jako tekst. Czuję twój ból. Kiedy pisałem ten post w 2013 roku, to z powodu tego problemu i miliona innych podobnych do tego, że moja poprzednia maszyna do Windows została ostrzelana i wyrzucona do kosza z powodu zanieczyszczenia mojego komputera, siedzi gdzieś na wysypisku śmieci . Jedynym sposobem, w jaki udało mi się to naprawić, było pozbycie się systemu operacyjnego Windows i migracja do ideologii Mac i Linux, które nie popełniają tych przestępstw związanych z wstawianiem pośredników, aby uniemożliwić działanie Ctrl-C.
Eric Leschinski
1

SQL obsługuje zapytania wprowadzone jako wiele wierszy. Dopiero po wprowadzeniu średnika ;zapytanie zostanie wykonane. Musisz także zakończyć wszelkie ciągi w swoim zapytaniu.

Uważaj na kopiowanie i wklejanie zapytań zawierających ciągi znaków z pakietu edytora tekstu - cytaty mogły zostać zastąpione przez „inteligentne cytaty”, a to zepsuło twoje zapytanie.

Jeśli wprowadziłeś nieokreślone zapytanie, to nie działa, i dlatego wpisywanie exit nie działa - MySQL myśli, że wciąż jesteś w środku zapytania. Wiersz polecenia zmienia się, aby pokazać, jakie dane wejściowe są potrzebne do zakończenia zapytania. Na przykład może być wymagana wycena lub podwójna wycena. Jest to potężne narzędzie i wiersz polecenia jest pomocny, ale uznałem to za mylące, dopóki nie przeczytałem odpowiedzi i komentarzy w tym wątku.

przeczytaj specyfikację tutaj

Monit „najwyższego poziomu” to:

mysql>

Jeśli to zobaczysz, możesz wprowadzić polecenie, zakończyć je znakiem; i naciśnij enter.

Jeśli zobaczysz taki monit:

'>
">
->

Następnie MySQL czeka na zakończenie ciągu z cytatem lub zapytaniem z średnikiem.

Oto jak powiedzieć MySQL, aby anulował pomieszane, nieskończone zapytanie i przywrócił główny monit:

\c

Myślę, że jest to bezpieczniejsze niż zakończenie i uruchomienie niezamierzonego zapytania. Następnie powróć do monitu> i możesz wyjść z:

exit
Little Brain
źródło
1

\qwykonuje dla mnie pracę. Korzystanie z terminalu Ubuntu.

Daniyal Javaid
źródło
0

Możesz spróbować uciec za pomocą Ctrl+ Shift+D

Akshay Chawda
źródło
3
Jest to artefakt konkretnego emulatora terminala, którego używasz, więc dobrze byłoby wiedzieć, który jest twój. Twój najwyraźniej zmienił Ctrl-Shift-D na kod klucza, który proces mysql interpretuje jako wyjście. W takim przypadku powinieneś być w stanie ponownie przypisać kody klawiszy w emulatorze terminala, abyś nie musiał mieć tunelu nadgarstka, aby wyjść z programu.
Eric Leschinski