Wie verlasse ich die MySQL-Eingabeaufforderung?


37

Ich habe MySQL installiert. Jetzt stecke ich in der MySQL-Eingabeaufforderung fest. Ich habe MySQL folgendermaßen ausgeführt:

C:\>mysql.exe
mysql>

Dann gebe ich einen ungültigen Befehl wie diesen ein:

mysql> /version
    ->

Und egal was ich tippe, ich kann MySQL-Kommandozeile / Terminal nicht beenden. Z.B:

  • exit

  • CtrlC

  • CtrlD

  • quit

  • Ctrl\

  • CtrlZ

  • bye

Wie verlasse ich das MySQL-Terminal zum Standard-Terminal?


1
Haben Sie versucht, Ihren Computer herunterzufahren? / s
VarunAgw

Antworten:


29

Um die andere Antwort zu ergänzen, können Sie die aktuelle ungültige Abfrage einfach mit einem Semikolon beenden:

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

c:\mysql\bin>

Oder mit \G(was dazu führen soll, dass Zeilen vertikal angezeigt werden):

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

c:\mysql\bin>

Natürlich setzen beide Optionen voraus, dass Sie kein Eröffnungsangebot haben. Wenn Sie dies tun, müssen Sie es zuerst mit einem abschließenden Zitat abschließen.


Was mir aufgefallen war, war, dass ich nicht vollständig verstanden habe, wie das mysql-Terminal Eingaben in den verschiedenen hier definierten Anführungszeichenmodi behandelt: dev.mysql.com/doc/refman/5.0/en/entering-queries.html Es gibt 5 Modi : ->, '>, ">, `>, und /*> ich es wieder auf den neuesten Versionen getestet, und es funktionierte richtig. Es sieht also nach einem behobenen Fehler aus.
Eric Leschinski

Semikolon funktioniert nicht ... nichts. Wenn ich \ G tue, verhält es sich so, als hätte es diesen dummen -> Modus verlassen, geht aber nach einem anderen Befehl wieder hinein. Warum ist MySQL so dumm?
Amalgovinus

Die wirkliche Antwort ist, Windows 'MySQL-CLI ist vermasselt und kann stecken bleiben. Der einfachste Weg unter Windows ist die Verwendung von Git Bash
Amalgovinus

20

Warum beendet Strg-C den MySQL-Eingabemodus in Windows nicht?

Weil Sie MySQL angewiesen haben, Ihre Exit-Befehle als gültige Eingabe zu interpretieren.

Das MySQL-Terminal ist nur schwer zu verstehen, da es verschiedene Modi für einfache Anführungszeichen, doppelte Anführungszeichen und normale Anführungszeichen gibt.

Um den MySQL-Eingabemodus zu verlassen, müssen Sie die folgenden Schritte ausführen:

  1. Verlassen Sie den Anführungszeichen-Modus.
  2. Verlassen Sie den Modus für einfache Anführungszeichen.
  3. Verlassen Sie den MySQL-Modus.
  4. Beenden Sie MySQL wieder auf dem Standardterminal.

Das grundlegendste Beispiel:

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

C:\>

Sie haben den Standardmodus im obigen Beispiel nie verlassen, damit die Exit-Befehle ordnungsgemäß funktionieren.

Beispiel 2 (das ist es, was dich auslöst).

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ährend Sie sich im einfachen oder doppelten Anführungszeichenmodus befinden, werden keine Escape-Sequenzen berücksichtigt. Gerade Ctrl-Cund Ctrl-Dwerden in diesen Modi ignoriert.

In welchem ​​der 26 Universen stoppt Strg-C ein Programm nicht unabhängig vom Modus? Wir werden es vielleicht nie erfahren. Bazinga.


1
Ich vermute, Zitate entkommen den Dingen und warten auf weitere Eingaben. Das macht eigentlich Sinn, wenn Sie so etwas wie "exit" in einer Datenbank speichern
Journeyman Geek

@Eric, Während Strg-D im Anführungszeichenmodus nicht funktioniert, funktioniert Strg-C immer noch, wenn Sie ältere Clients wie mysql 5.5.43 und mysql 5.1.73 verwenden. Getestet auf Sieg 8.1.
Pacerier

Ctrl-c überlässt es mir immer noch nicht. Ich bekomme nie die "bye" Nachricht. Wenn ich im -> Modus bleibe, kann ich nur Strg + C drücken, um auszusteigen. Ansonsten erhält der Dolmetscher keine Antwort. MySQL ist in den meisten Fällen intuitiv, aber dies ist kein solcher Fall.
Amalgovinus

Möglicherweise verschlingt Ihr Terminal-Emulator Ihre Ctrl-Codes und sendet einen anderen Schlüsselcode an den Prozess, den er als Text interpretiert. Ich fühle deinen Schmerz. Als ich diesen Post 2013 schrieb, war es für dieses Problem und eine Million andere, genau wie es, dass meine frühere Windows-Maschine wegen Kontamination meines PCs in den Müll geworfen wurde und irgendwo auf einer Mülldeponie liegt . Die einzige Möglichkeit, dies zu beheben, bestand darin, das Windows-Betriebssystem zu entfernen und auf Mac- und Linux-Ideologien zu migrieren, die diese Verbrechen des Einfügens von Zwischenhändlern nicht begehen, um die Funktionsfähigkeit von Strg-C zu verhindern.
Eric Leschinski

1

SQL unterstützt Abfragen, die als mehrere Zeilen eingegeben wurden. Nur wenn Sie ein Semikolon eingeben, ;wird die Abfrage ausgeführt. Sie müssen auch alle Zeichenfolgen in Ihrer Abfrage beendet haben.

Achten Sie auf das Kopieren und Einfügen von Abfragen mit Zeichenfolgen aus einem Textverarbeitungspaket. Möglicherweise wurden Anführungszeichen durch "intelligente Anführungszeichen" ersetzt, was Ihre Abfrage durcheinander bringt.

Wenn Sie eine nicht abgeschlossene Abfrage eingegeben haben, wird sie nicht ausgeführt, und deshalb funktioniert die Eingabe von exit nicht - MySQL glaubt, dass Sie sich noch mitten in einer Abfrage befinden. Die Eingabeaufforderung ändert sich und zeigt an, welche Eingaben zum Beenden der Abfrage erforderlich sind. Beispielsweise kann ein Anführungszeichen oder ein doppeltes Anführungszeichen erforderlich sein. Das ist mächtig und die Eingabeaufforderung ist hilfreich, aber ich fand es verwirrend, bis ich die Antworten und Kommentare zu diesem Thread gelesen habe.

Lesen Sie die Spezifikation hier

Die Eingabeaufforderung der obersten Ebene lautet:

MySQL>

Wenn Sie dies sehen, können Sie einen Befehl eingeben und mit beenden. und drücken Sie die Eingabetaste.

Wenn Sie eine Eingabeaufforderung wie diese sehen:

'>
">
->

Dann wartet MySQL darauf, dass Sie einen String mit einem Anführungszeichen oder eine Abfrage mit einem Semikolon abschließen.

So weisen Sie MySQL an, Ihre verkorkste, nicht abgeschlossene Abfrage abzubrechen und zur Hauptaufforderung zurückzukehren:

\c

Ich halte dies für sicherer, als Ihre unbeabsichtigte Abfrage zu beenden und auszuführen. Danach sollten Sie wieder zur Eingabeaufforderung> zurückkehren und können mit folgendem Befehl beenden:

exit


0

Sie können versuchen, mit Ctrl+ Shift+ zu fliehenD


3
Dies ist ein Artefakt des von Ihnen verwendeten Terminal-Emulators. Daher ist es hilfreich zu wissen, welcher Ihnen gehört. Ihr hat offenbar Strg-Umschalt-D einem Schlüsselcode zugeordnet, den der Mysql-Prozess als Exit interpretiert. In diesem Fall sollten Sie in der Lage sein, die Schlüsselcodes in Ihrem Terminalemulator neu zuzuordnen, damit Sie keinen Karpaltunnel benötigen, um ein Programm zu beenden.
Eric Leschinski
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.