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 .


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.


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.


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.


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.


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


0

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


0

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

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.