Como sair do prompt de comando do MySQL?


37

Eu instalei o MySQL. Agora estou preso dentro do prompt de comando do MySQL. Eu executei o MySQL assim:

C:\>mysql.exe
mysql>

Então eu digito algum comando inválido como este:

mysql> /version
    ->

E não importa o que eu digite, não consigo sair da linha de comando / terminal do MySQL. Por exemplo:

  • exit

  • CtrlC

  • CtrlD

  • quit

  • Ctrl\

  • CtrlZ

  • bye

Como saio do terminal MySQL para o terminal padrão?


1
Você tentou desligar o computador? / s
VarunAgw

Respostas:


29

Para adicionar a outra resposta, você pode simplesmente encerrar a consulta inválida atual usando um ponto e vírgula:

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

c:\mysql\bin>

Ou usando \G(que deve fazer as linhas serem exibidas verticalmente):

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

c:\mysql\bin>

Obviamente, ambas as opções assumem que você não tem uma citação de abertura. Se o fizer, você deve primeiro fechá-lo com uma cotação final.


O que me impressionou foi que eu não entendia completamente como o terminal mysql trata a entrada em seus vários modos de cotação, conforme definido aqui: dev.mysql.com/doc/refman/5.0/en/entering-queries.html Existem 5 modos : ->, '>, ">, `>, e /*> eu testei novamente nas versões mais recentes, e funcionou corretamente. Portanto, parece um bug corrigido.
Eric Leschinski

Ponto e vírgula não funciona ... nada funciona. Se eu fizer \ G, ele age como se tivesse saído desse modo estúpido ->, mas depois volta para ele após outro comando. Por que o mysql é tão burro quanto a isso?
Amalgovinus

A resposta real é que o mysql cli do Windows está estragado e pode ficar preso. A maneira mais fácil no Windows é apenas para bater uso git
Amalgovinus

20

Por que ctrl-c não sai do modo de entrada mysql no Windows?

Porque você disse ao MySQL para interpretar seus comandos de saída como entrada válida.

O que torna o terminal MySQL difícil de entender é que existem modos diferentes para aspas simples, aspas duplas e modo normal.

Então, para sair do modo de entrada mysql, você terá que executar estas etapas:

  1. Saia do modo de aspas duplas.
  2. Saia do modo de aspas simples.
  3. Saia do modo mysql.
  4. Saia do mysql de volta ao terminal padrão.

Exemplo mais básico:

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

C:\>

Você nunca saiu do modo padrão no exemplo acima, portanto, os comandos de saída funcionam corretamente.

Exemplo 2 (é isso que está enganando você).

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

Enquanto você estiver no modo de aspas simples ou aspas duplas, nenhuma sequência de escape será respeitada. Par Ctrl-Ce Ctrl-Dsão ignorados nesses modos.

Em qual dos 26 universos o Ctrl-C não para um programa, independentemente do modo? Nós podemos nunca saber. Bazinga.


1
Suponho que as aspas escapam das coisas, e está esperando por mais informações. Isso realmente tipo de faz sentido quando você pode armazenar algo como "exit" dentro de um banco de dados
Journeyman Geek

@ Eric, enquanto o Ctrl-D não funciona quando você está no modo de cotação, o Ctrl-C ainda funciona se você estiver usando clientes mais antigos , como o mysql 5.5.43 e o mysql 5.1.73. Testado na vitória 8.1.
Pacerier

Ctrl-c ainda não deixa para mim. Eu nunca recebo a mensagem de "tchau". Além disso, quando estou no modo ->, a única coisa que posso fazer é Ctrl + C para sair? Absolutamente nada mais recebe uma resposta do intérprete. O Mysql é intuitivo na maioria dos casos, mas esse não é um caso.
Amalgovinus

Talvez o seu emulador de terminal esteja devorando seus códigos Ctrl e enviando um código-chave diferente para o processo que ele interpreta como texto. Sinto sua dor. Quando escrevi este post em 2013, foi por esse problema e por milhões de outros que minha antiga máquina Windows foi destruída e jogada no lixo por contaminar meu PC, está em um aterro sanitário em algum lugar . A única maneira que encontrei para corrigir isso foi me livrar do sistema operacional Windows e migrar para ideologias Mac e Linux que não cometem esses crimes de inserir intermediários para impedir que seu Ctrl-C funcione.
Eric Leschinski 30/10

1

O SQL suporta consultas inseridas como várias linhas. Somente quando você digitar um ponto e vírgula ;, a consulta será executada. Você também precisa ter finalizado qualquer sequência na sua consulta.

Cuidado para copiar e colar consultas com seqüências de caracteres de um pacote de processamento de texto - as aspas podem ter sido substituídas por 'aspas inteligentes' e isso atrapalhará sua consulta.

Se você inseriu uma consulta não terminada, ela não é executada e é por isso que digitar exit não funciona - o MySQL acha que você ainda está no meio de uma consulta. O prompt de comandos é alterado para mostrar que entrada é necessária para finalizar a consulta. Por exemplo, uma cotação ou cotação dupla pode ser necessária. Isso é poderoso e o prompt de comando é útil, mas achei confuso até ler as respostas e comentários sobre este tópico.

leia a especificação aqui

O prompt 'nível superior' é:

mysql>

Se você vir isso, poderá inserir um comando e terminar com; e pressione enter.

Se você vir um prompt como este:

'>
">
->

Então, o MySQL está esperando que você termine uma string com uma citação ou uma consulta com ponto e vírgula.

Aqui está como dizer ao MySQL para cancelar sua consulta não terminada e colocar você de volta ao prompt principal:

\c

Eu acho que isso é mais seguro do que encerrar e executar sua consulta não intencional. Depois disso, você deve voltar ao prompt> e pode sair com:

exit


0

Você pode tentar escapar usando Ctrl+ Shift+D


3
Este é um artefato do emulador de terminal específico que você está usando, portanto, seria útil saber qual é o seu. O seu aparentemente remapeou Ctrl-Shift-D para um código-chave que o processo mysql interpreta como saída. Se esse for o caso, você poderá remapear os códigos de chave no emulador de terminal para não precisar obter o túnel do carpo para sair de um programa.
Eric Leschinski 30/10
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.