2013-08-08 21:39:05 +0000 2013-08-08 21:39:05 +0000
39
39

Jak opuścić wiersz poleceń MySQL?

Zainstalowałem MySQL. Teraz utknąłem w wierszu poleceń MySQL. Uruchomiłem MySQL w ten sposób:

C:\>mysql.exe
mysql>

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

mysql> /version
    ->

I bez względu na to, co wpiszę, nie mogę wyjść z wiersza poleceń MySQL / terminala. Np:

  • exit

  • CtrlC

  • CtrlD

  • quit

  • Ctrl\

  • CtrlZ

  • bye

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

Odpowiedzi (5)

31
31
31
2015-01-10 14:13:49 +0000

Aby dodać do innej odpowiedzi, możesz po prostu zakończyć bieżące niepoprawne 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 cytatu otwierającego. Jeśli tak, musisz najpierw zamknąć go cudzysłowem kończącym.

20
20
20
2013-08-08 21:40:45 +0000

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

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

To, co sprawia, że terminal MySQL jest trudny do zrozumienia, to fakt, że istnieją różne tryby dla pojedynczego cytatu, podwójnego cytatu i trybu normalnego.

Więc aby wyjść z trybu wprowadzania danych mysql, będziesz musiał wykonać następujące kroki:

  1. Wyjdź z trybu podwójnego cytatu.
  2. Wyjdź z trybu pojedynczego cytowania.
  3. Wyjdź z trybu mysql.
  4. Wyjdź z mysql z powrotem do domyślnego terminala.

Najprostszy przykład:

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

C:\>

W powyższym przykładzie nie wyszedłeś z trybu domyślnego, więc komendy wyjścia działają poprawnie.

Przykład 2 (to jest to, co ci przeszkadza).

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:\>

Gdy jesteś w trybie pojedynczego lub podwójnego cytatu, żadne sekwencje ucieczki nie są respektowane. Nawet Ctrl-C i Ctrl-D są ignorowane w tych trybach.

W którym z 26 wszechświatów Ctrl-C nie zatrzymuje programu niezależnie od trybu? Być może nigdy się tego nie dowiemy. Bazinga.

1
1
1
2018-12-18 12:37:01 +0000

SQL obsługuje zapytania wprowadzane jako wiele linii. Dopiero po wprowadzeniu średnika ; zapytanie zostanie wykonane. Musisz również zakończyć wszystkie ciągi znaków w zapytaniu.

Uważaj na kopiowanie i wklejanie zapytań z ciągami znaków z edytora tekstu - cudzysłowy mogły zostać zastąpione “inteligentnymi cudzysłowami”, a to może zepsuć zapytanie.

Jeśli wprowadziłeś zapytanie bez zakończenia, nie zostanie ono uruchomione, dlatego też nie zadziała wpisanie wyjścia - MySQL myśli, że nadal jesteś w środku zapytania. Wiersz poleceń zmienia się, aby pokazać, co jest potrzebne do zakończenia zapytania. Na przykład cudzysłów lub podwójny cudzysłów może być wymagany. Jest to potężne, a wiersz poleceń jest pomocny, ale znalazłem to mylące, dopóki nie przeczytałem odpowiedzi i komentarzy w tym wątku. przeczytaj specyfikację tutaj

Znak zachęty “najwyższego poziomu” to:

mysql>

Jeśli widzisz to, wtedy możesz wprowadzić polecenie, zakończyć je ; i nacisnąć enter.

Jeśli zobaczysz znak zachęty taki jak ten:

'>
">
->

Wtedy MySQL czeka, aż zakończysz ciąg znaków cudzysłowem lub zapytanie średnikiem.

Oto jak powiedzieć MySQL, aby anulował twoje błędne zapytanie bez zakończenia i powrócił do głównego znaku zachęty:

\c

Myślę, że jest to bezpieczniejsze niż zakończenie i uruchomienie twojego niezamierzonego zapytania. Po tym, powinieneś wrócić do znaku zachęty i możesz wyjść za pomocą:

exit
1
1
1
2019-01-31 16:42:07 +0000

\q wykonuje zadanie dla mnie. Używając Terminala Ubuntu.

0
0
0
2018-10-30 12:37:35 +0000

Możesz spróbować uciec używając Ctrl+Shift+D