¿Cómo se borra una consulta MySQL no ejecutada desde la línea de comandos?

88

Suponga que está escribiendo una consulta de línea de comandos en una base de datos MySQL y necesita cancelar y comenzar de nuevo. Desde un shell bash, simplemente puede escribir ctrl-c y obtener un nuevo indicador. En MySQL, ctrl-c saldría del cliente y lo devolvería al shell.

Por ejemplo, tengo una declaración SELECT larga y compleja escrita, pero aún no he pulsado return. Me doy cuenta de que no quiero enviar el comando, pero quiero tener el comando en pantalla para poder usarlo como referencia. Me gustaría rescatar sin salir de MySQL. ¿Algunas ideas?

Punto clave: el comando aún no se ha ejecutado .

Logan
fuente
10
Solo como referencia, en mysql 5.7, esto se ha resuelto. Ahora puede hacer ctrl-c para hacer exactamente esto.
dkniffin
La pila LAMP es tan antigua y tiene un uso tan generalizado. Me desconcierta que les lleve tanto tiempo arreglar cosas con las que la gente se habría topado día tras día.
ahnbizcad
@dkniffin: Sé que esta es una pregunta antigua, pero aún ocupa el primer lugar en una búsqueda. ¿Podría agregar su comentario como respuesta (ya es una respuesta) para ayudar al tráfico continuo?
sombrero
@ Eso está bien, lo agregué como respuesta
dkniffin

Respuestas:

114

Escriba \c.

Cuando inicie MySQL, probablemente verá este mensaje:

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

El "búfer" al que se refiere es el búfer de comando / consulta.

ruakh
fuente
7
Solo un pequeño punto: tienes que hacer esto antes que cualquier terminador de punto y coma.
wulftone
Lo bueno es que en realidad no lo aclara ; lo que esté escrito permanece visible. (Honestamente wouldn't've supuse que a partir del mensaje, que es por eso que nunca he intentado.)
Michael Scheper
43

Primero escriba Ctrl+ a, luego Ctrl+ k.

hasta
fuente
4
Pero el OP especificó: "Quiero tener el comando en pantalla para poder usarlo como referencia".
ruakh
Funciona a partir de la versión 5.5.40-0.
hasta el
1
No funciona con 5.6.28 @Ubuntu. Además de eso, esta es una secuencia para matar la ventana de pantalla actual.
Piohen
1
Bueno, siempre puedes configurar esta secuencia como un atajo para esto y aquello. Es la secuencia predeterminada en emacs y bash.
hasta el
1
Por supuesto, no funciona para mi caso de uso más común: olvidé el punto y coma, presioné enter y en lugar de abarrotar mi historial con dos líneas innecesarias, prefiero reescribir el comando correctamente.
Quazgar
18

Utilice uno de los siguientes atajos para eliminar la línea actual:

  • Escriba Ctrl+ upara eliminar todo, desde el cursor hasta el inicio de la línea
  • Escriba Ctrl+ kpara eliminar todo, desde el cursor hasta el final de la línea

De lo contrario, como ya se indicó, escriba \cal final de la línea actual (un atajo para el clearcomando) y luego presione Enter.

Bladerz
fuente
0

Si es un comando largo, usualmente uso la flecha al principio del comando y agrego galimatías, para que no se ejecute, pero puedo usar la flecha hacia arriba y obtener acceso sin tener que volver a escribirlo. De lo contrario, si no desea ejecutarlo, simplemente presione la flecha hacia arriba y debería desplazarse por su historial de comandos. Busque un comando corto, retroceda, luego escriba lo que quiera.

Mike Purcell
fuente
0

Depende de las combinaciones de teclas de su shell. Puede presionar inicio o cualquier secuencia de teclas que use para volver al inicio, prefijar su consulta con X o lo que sea para que sea sintácticamente inválida, presione enter y listo

atxdba
fuente
0

Si vino aquí con la esperanza de encontrar la misma respuesta en Transact-SQL, escriba RESET

Post Impatica
fuente
0

En mysql 5.7, esto se ha resuelto. Ahora puede hacer ctrl-cpara salir de la línea de comandos SQL.

dkniffin
fuente