Wie löscht man eine nicht ausgeführte MySQL-Abfrage über die Befehlszeile?

84

Angenommen, Sie geben eine Befehlszeilenabfrage in eine MySQL-Datenbank ein und müssen abbrechen und neu beginnen. In einer Bash-Shell können Sie einfach Strg-C eingeben und eine neue Eingabeaufforderung erhalten. In MySQL würde Strg-C den Client beenden und Sie zur Shell zurückbringen.

Zum Beispiel habe ich eine lange, komplexe SELECT-Anweisung eingegeben, aber ich habe noch nicht die Eingabetaste gedrückt. Mir ist klar, dass ich den Befehl nicht senden möchte, aber ich möchte den Befehl auf dem Bildschirm haben, damit ich ihn als Referenz verwenden kann. Ich möchte aussteigen, ohne MySQL zu beenden. Irgendwelche Ideen?

Schlüsselpunkt: Der Befehl wurde noch nicht ausgeführt .

Logan
quelle
10
Nur als Referenz wurde dies in MySQL 5.7 behoben. Sie können jetzt Strg-C ausführen, um genau dies zu tun.
dkniffin
Der LAMP-Stapel ist so alt und weit verbreitet. Es verwirrt mich, dass sie so lange brauchen, um Dinge zu reparieren, auf die die Leute Tag für Tag gestoßen wären.
Ahnbizcad
@dkniffin: Ich weiß, dass dies eine alte Frage ist, aber sie steht bei einer Suche immer noch an erster Stelle. Könnten Sie Ihren Kommentar als Antwort hinzufügen (es ist bereits eine Antwort), um den anhaltenden Verkehr zu unterstützen?
Hut
@hat in Ordnung, ich habe es als Antwort hinzugefügt
dkniffin

Antworten:

111

Typ \c.

Wenn Sie MySQL starten, wird wahrscheinlich folgende Meldung angezeigt:

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

Der "Puffer", auf den es sich bezieht, ist der Befehls- / Abfragepuffer.

Ruakh
quelle
7
Nur ein kleiner Punkt: Sie müssen dies vor jedem Semikolon-Terminator tun .
Wulftone
Das Schöne daran ist, ist es nicht wirklich klar , es; Was auch immer eingegeben wurde, bleibt sichtbar. (Ich hätte das ehrlich gesagt nicht aus der Nachricht erraten, weshalb ich es nie versucht habe.)
Michael Scheper
43

Geben Sie zuerst Ctrl+ aund dann Ctrl+ ein k.

bis
quelle
4
Das OP gab jedoch an: "Ich möchte den Befehl auf dem Bildschirm haben, damit ich ihn als Referenz verwenden kann."
Ruakh
Funktioniert ab Version 5.5.40-0.
Bis zum
1
Funktioniert nicht mit 5.6.28 @Ubuntu. Außerdem ist dies eine Sequenz, um das aktuelle Bildschirmfenster zu beenden.
Piohen
1
Nun, Sie können diese Sequenz immer als Abkürzung für dies und das festlegen. Dies ist die Standardsequenz in Emacs und Bash.
Bis zum
1
Funktioniert natürlich nicht für meinen häufigsten Anwendungsfall: Ich habe das Semikolon vergessen, die Eingabetaste gedrückt und anstatt meinen Verlauf mit einem unnötigen Zweizeiler zu überladen, würde ich den Befehl lieber korrekt umschreiben.
Quazgar
18

Verwenden Sie eine der folgenden Verknüpfungen, um die aktuelle Zeile zu löschen:

  • Geben Sie Ctrl+ ein u, um alles vom Cursor zurück zum Zeilenanfang zu löschen
  • Geben Sie Ctrl+ ein k, um alles vom Cursor bis zum Zeilenende zu löschen

Andernfalls geben Sie wie bereits angegeben \cam Ende der aktuellen Zeile ein (eine Verknüpfung für den clearBefehl) und drücken Sie dann Enter.

Bladerz
quelle
0

Wenn es sich um einen langen Befehl handelt, pfeile ich normalerweise zum Anfang des Befehls und füge Kauderwelsch hinzu, damit er nicht ausgeführt wird, aber ich kann nach oben pfeilen und Zugriff erhalten, ohne ihn erneut eingeben zu müssen. Andernfalls, wenn Sie es nicht ausführen möchten, drücken Sie einfach den Aufwärtspfeil und es sollte Sie durch Ihren Befehlsverlauf scrollen. Suchen Sie einen kurzen Befehl, drücken Sie die Rücktaste und geben Sie ein, was Sie wollen.

Mike Purcell
quelle
0

Hängt von den Schlüsselbindungen Ihrer Shell ab. Sie können die Starttaste drücken oder eine beliebige Tastenfolge verwenden, um zum Start zurückzukehren, Ihrer Abfrage X voranstellen oder was auch immer, um sie syntaktisch ungültig zu machen, die Eingabetaste drücken und Sie sind gut

atxdba
quelle
0

Wenn Sie hierher gekommen sind, um die gleiche Antwort in Transact-SQL zu finden, geben Sie ein RESET

Helzgate
quelle
0

In MySQL 5.7 wurde dies behoben. Sie können jetzt ctrl-cdie SQL-Befehlszeile verlassen.

dkniffin
quelle