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

Wie kann ich die MySQL-Eingabeaufforderung beenden?

Ich habe MySQL installiert. Jetzt stecke ich in der MySQL-Eingabeaufforderung fest. Ich habe MySQL wie folgt ausgeführt:

C:\>mysql.exe
mysql>

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

mysql> /version
    ->

Und egal, was ich eingebe, ich kann die MySQL-Kommandozeile / das Terminal nicht verlassen. Z.B.:

  • exit

  • CtrlC

  • CtrlD

  • quit

  • Ctrl\

  • CtrlZ

  • bye

Wie verlasse ich das MySQL-Terminal zum Standardterminal?

Antworten (5)

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

Um die andere Antwort zu ergänzen, könnten 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 unter Verwendung von \G (was dafür sorgen soll, dass die 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 öffnendes Anführungszeichen haben. Wenn Sie eines haben, müssen Sie es zuerst mit einem abschließenden Anführungszeichen abschließen.

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

Warum beendet ctrl-c den Eingabemodus von mysql unter Windows nicht?

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

Was das MySQL-Terminal schwer zu verstehen macht, ist, dass es verschiedene Modi für einfache Anführungszeichen, doppelte Anführungszeichen und den normalen Modus gibt.

Um also aus dem mysql-Eingabemodus herauszukommen, müssen Sie folgende Schritte durchführen:

  1. Raus aus dem Modus für doppelte Anführungszeichen.
  2. Verlassen Sie den Modus für einfache Anführungszeichen.
  3. Verlassen Sie den mysql-Modus.
  4. Beenden Sie mysql zurück zum Standard-Terminal.

Einfachstes Beispiel:

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

C:\>

Sie haben den Standardmodus im obigen Beispiel nie verlassen, also funktionieren die Exit-Befehle korrekt.

Beispiel 2 (das ist es, was Sie stört):

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

Solange Sie sich im Modus für einfache oder doppelte Anführungszeichen befinden, werden keine Escape-Sequenzen beachtet. Selbst Ctrl-C und Ctrl-D werden in diesen Modi ignoriert.

In welchem der 26 Universen stoppt Ctrl-C ein Programm nicht, unabhängig vom Modus? Das werden wir wohl nie erfahren. Bazinga.

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

SQL unterstützt Abfragen, die als mehrere Zeilen eingegeben werden. Nur wenn Sie ein Semikolon ; eingeben, wird die Abfrage ausgeführt. Außerdem müssen Sie alle Zeichenketten in Ihrer Abfrage beendet haben.

Achten Sie auf das Kopieren und Einfügen von Abfragen mit Zeichenketten aus einem Textverarbeitungspaket - Anführungszeichen können durch “intelligente Anführungszeichen” ersetzt worden sein, und das bringt Ihre Abfrage durcheinander.

Wenn Sie eine nicht beendete Abfrage eingegeben haben, wird sie nicht ausgeführt, und deshalb funktioniert das Tippen von exit nicht - MySQL denkt, dass Sie noch mitten in einer Abfrage sind. Die Eingabeaufforderung ändert sich und zeigt an, welche Eingabe zum Beenden der Abfrage erforderlich ist. Zum Beispiel 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 in diesem Thread gelesen habe. lesen Sie die Spezifikation hier

Der ‘Top-Level’-Prompt ist:

mysql>

Wenn Sie dies sehen, können Sie einen Befehl eingeben, ihn mit ; abschließen und Enter drücken.

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 sagen Sie MySQL, dass es Ihre verpfuschte unterminierte Abfrage abbrechen und Sie zurück zum Hauptprompt bringen soll:

\c

Ich denke, das ist sicherer, als Ihre ungewollte Abfrage abzubrechen und auszuführen. Danach sollten Sie wieder zur Eingabeaufforderung > zurückkehren und können mit beenden:

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

\q erledigt die Aufgabe für mich. Mit Ubuntu Terminal.

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

Sie können versuchen, mit der Tastenkombination Strg+Umschalt+D zu entkommen