¿Cómo salir del símbolo del sistema MySQL?


37

He instalado MySQL. Ahora estoy atrapado dentro del símbolo del sistema MySQL. Ejecuté MySQL así:

C:\>mysql.exe
mysql>

Luego escribo un comando no válido como este:

mysql> /version
    ->

Y no importa lo que escriba, no puedo salir de la línea de comandos / terminal de MySQL. P.ej:

  • exit

  • CtrlC

  • CtrlD

  • quit

  • Ctrl\

  • CtrlZ

  • bye

¿Cómo salgo del terminal MySQL al terminal predeterminado?


1
¿Intentaste apagar tu computadora? / s
VarunAgw

Respuestas:


29

Para agregar a la otra respuesta, simplemente puede finalizar la consulta inválida actual usando un punto y coma:

mysql> /version
    -> ;
ERROR 1064 (42000): You have an error in your SQL syntax.........
mysql> exit
Bye

c:\mysql\bin>

O usando \G(que se supone que hace que las filas se muestren verticalmente):

mysql> /version
    -> ;
ERROR 1064 (42000): You have an error in your SQL syntax.........
mysql> exit
Bye

c:\mysql\bin>

Por supuesto, ambas opciones suponen que no tiene presupuesto de apertura. Si lo hace, primero debe cerrarlo con una cotización final.


Lo que me hizo tropezar fue que no entendía completamente cómo el terminal mysql trata la entrada en sus diversos modos de cotización como se define aquí: dev.mysql.com/doc/refman/5.0/en/entering-queries.html Hay 5 modos : ->, '>, ">, `>, y /*> he comprobado otra vez en las últimas versiones, y ha funcionado correctamente. Entonces parece un error corregido.
Eric Leschinski

El punto y coma no funciona ... nada funciona. Si hago \ G, actúa como si hubiera salido de ese estúpido modo ->, pero luego vuelve a entrar después de otro comando. ¿Por qué mysql es tan tonto con esto?
Amalgovinus

La verdadera respuesta es que mysql cli de Windows está jodido y puede atascarse. La forma más fácil en Windows es usar git bash
Amalgovinus

20

¿Por qué ctrl-c no sale del modo de entrada mysql en Windows?

Porque le has dicho a MySQL que interprete tus comandos de salida como una entrada válida.

Lo que hace que el terminal MySQL sea difícil de entender es que hay diferentes modos para comillas simples, comillas dobles y modos normales.

Entonces, para salir del modo de entrada mysql, deberá seguir estos pasos:

  1. Salga del modo de comillas dobles.
  2. Salga del modo de comillas simples.
  3. Sal del modo mysql.
  4. Salga de mysql de vuelta a la terminal predeterminada.

Ejemplo más básico:

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

C:\>

Nunca dejó el modo predeterminado en el ejemplo anterior, por lo que los comandos de salida funcionan correctamente.

Ejemplo 2 (esto es lo que te está tropezando).

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

Mientras está en modo de comillas simples o dobles, no se respetan las secuencias de escape. Incluso Ctrl-Cy Ctrl-Dse ignoran en estos modos.

¿En cuál de los 26 universos Ctrl-C no detiene un programa independientemente del modo? Puede que nunca lo sepamos. Bazinga


1
Supongo que las citas escapan de las cosas, y está esperando más información. Eso realmente tiene sentido cuando puedes almacenar algo como "salir" dentro de una base de datos
Journeyman Geek

@Eric, mientras que Ctrl-D no funciona cuando está en modo cotización, Ctrl-C aún funciona si está utilizando clientes más antiguos como mysql 5.5.43 y mysql 5.1.73. Probado en win 8.1.
Pacerier

Ctrl-c todavía no me lo deja. Nunca recibo el mensaje de "adiós". Además, cuando estoy en modo ->, ¿lo único que puedo hacer es Ctrl + C para salir? Absolutamente nada más recibe una respuesta del intérprete. Mysql es intuitivo en la mayoría de los casos, pero este no es uno de esos casos.
Amalgovinus

Tal vez su emulador de terminal esté engullendo sus códigos Ctrl y enviando un código clave diferente al proceso que interpreta como texto. Siento tu dolor, cuando escribí esta publicación en 2013, fue por este problema y un millón de otros igual que mi anterior máquina Windows fue arrojada a la basura por contaminar mi PC, está en un vertedero en algún lugar . La única forma en que encontré solucionar esto fue deshacerme del sistema operativo Windows y migrar a las ideologías de Mac y Linux que no cometen estos delitos de insertar intermediarios para evitar que su Ctrl-C funcione.
Eric Leschinski

1

SQL admite consultas ingresadas como líneas múltiples. Solo cuando ingrese un punto y coma ;se ejecutará la consulta. También debe haber terminado cualquier cadena en su consulta.

Tenga cuidado al copiar y pegar consultas con cadenas de un paquete de procesamiento de texto: las citas pueden haber sido reemplazadas por 'citas inteligentes' y esto arruinará su consulta.

Si ha ingresado una consulta no terminada, no se ejecuta, y es por eso que escribir exit no funciona: MySQL cree que todavía está en el medio de una consulta. El símbolo del sistema cambia para mostrar qué entrada se necesita para finalizar la consulta. Por ejemplo, se puede requerir una cotización o doble cotización. Esto es poderoso y el símbolo del sistema es útil, pero lo encontré confuso hasta que leí las respuestas y comentarios en este hilo.

lea la especificación aquí

El indicador de "nivel superior" es:

mysql>

Si ve esto, puede ingresar un comando y finalizarlo con; y presione enter.

Si ve un mensaje como este:

'>
">
->

Entonces MySQL está esperando que termine una cadena con una cita o una consulta con un punto y coma.

A continuación, le indicamos cómo decirle a MySQL que cancele su consulta no terminada en mal estado y que vuelva al indicador principal:

\c

Creo que esto es más seguro que terminar y ejecutar su consulta no deseada. Después de esto, debe volver al indicador> y puede salir con:

exit


0

Puedes intentar escapar usando Ctrl+ Shift+D


3
Este es un artefacto del emulador de terminal específico que está utilizando, por lo que sería útil saber cuál es el suyo. El suyo aparentemente ha reasignado Ctrl-Shift-D a un código clave que el proceso mysql interpreta como salida. Si este es el caso, debería poder reasignar códigos clave en su emulador de terminal para que no tenga que obtener el túnel carpiano para salir de un programa.
Eric Leschinski
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.