Come si cancella una query MySQL non eseguita dalla riga di comando?


88

Supponi di digitare una query della riga di comando in un database MySQL e di dover annullare e ricominciare da capo. Da una shell bash puoi semplicemente digitare ctrl-c e ottenere un nuovo prompt. In MySQL, ctrl-c usciva dal client e tornava alla shell.

Ad esempio, ho digitato un'istruzione SELECT lunga e complessa ma non ho ancora premuto Invio. Mi rendo conto che non voglio inviare il comando ma voglio avere il comando sullo schermo in modo da poterlo usare come riferimento. Mi piacerebbe salvare senza chiudere MySQL. Qualche idea?

Punto chiave: il comando non è stato ancora eseguito .


10
Proprio come riferimento, in mysql 5.7, questo è stato risolto. Ora puoi fare ctrl-c per fare esattamente questo.
dkniffin

Lo stack LAMP è così vecchio e ha un utilizzo così diffuso. Mi sconcerta il fatto che impieghino così tanto tempo a sistemare cose che le persone avrebbero incontrato giorno dopo giorno.
ahnbizcad

@dkniffin: So che questa è una vecchia domanda, ma è ancora al primo posto in una ricerca. Potresti aggiungere il tuo commento come risposta (è già una risposta) per aiutare il traffico continuo?
cappello il

@ che va bene, l'ho aggiunto come risposta
dkniffin

Risposte:


115

Tipo \c.

Quando avvii MySQL, probabilmente vedrai questo messaggio:

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

Il "buffer" a cui si riferisce è il buffer di comando / query.


7
Solo un piccolo punto: devi farlo prima di qualsiasi terminatore punto e virgola.
wulftone

La cosa bella è che in realtà non lo cancella ; tutto ciò che viene digitato rimane visibile. (Onestamente non l'avrei immaginato dal messaggio, motivo per cui non ho mai provato.)
Michael Scheper

43

Prima digita Ctrl+ a, quindi Ctrl+ k.


4
Ma l'OP ha specificato: "Voglio avere il comando sullo schermo in modo da poterlo usare come riferimento".
ruakh

Funziona a partire dalla versione 5.5.40-0.
fino al

1
Non funziona con 5.6.28 @Ubuntu. Inoltre, questa è una sequenza per chiudere la finestra dello schermo corrente.
Piohen

1
Bene, puoi sempre impostare questa sequenza come scorciatoia per questo e quello. È la sequenza predefinita in emacs e bash.
fino al

1
Ovviamente non funziona per il mio caso d'uso più comune: ho dimenticato il punto e virgola, ho premuto Invio e invece di ingombrare la mia cronologia con una doppia riga inutile, preferisco riscrivere correttamente il comando.
Quazgar

18

Utilizzare una delle seguenti scorciatoie per eliminare la riga corrente:

  • Digita Ctrl+ uper cancellare tutto dal cursore all'inizio della riga
  • Digita Ctrl+ kper eliminare tutto dal cursore alla fine della riga

Altrimenti, come già indicato, digitare \calla fine della riga corrente (una scorciatoia per il clearcomando) e quindi premere Enter.


0

Se si tratta di un comando lungo, di solito faccio una freccia all'inizio del comando e aggiungo parole incomprensibili, quindi non verrà eseguito, ma posso utilizzare la freccia in alto e ottenere l'accesso senza doverlo riscrivere. Altrimenti, se non vuoi eseguirlo, premi la freccia su e dovrebbe farti scorrere la cronologia dei comandi. Trova un breve comando, backspace, quindi digita quello che vuoi.


0

Dipende dalle associazioni dei tasti della shell. Puoi premere home o qualsiasi sequenza di tasti che usi per tornare all'inizio, anteporre la tua query con X o qualsiasi altra cosa per renderla sintatticamente non valida, premi invio e sei a posto


0

Se sei venuto qui sperando di trovare la stessa risposta in Transact-SQL, digita RESET


0

In mysql 5.7, questo è stato risolto. Ora puoi farlo ctrl-cper uscire dalla riga di comando SQL.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.