2013-08-08 21:39:05 +0000 2013-08-08 21:39:05 +0000
39
39

Como sair do prompt de comando MySQL?

Instalei o MySQL. Agora estou preso dentro do prompt de comando do MySQL. Executei o MySQL desta forma:

C:\>mysql.exe
mysql>

Depois escrevo um comando inválido como este:

mysql> /version
    ->

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

  • exit

  • CtrlC

  • CtrlD

  • quit

  • Ctrl\

  • CtrlZ

  • bye

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

Respostas (5)

31
31
31
2015-01-10 14:13:49 +0000

Para acrescentar à outra resposta, poderia simplesmente terminar a actual consulta inválida 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 supostamente faz com que as linhas sejam exibidas verticalmente):

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

c:\mysql\bin>

Naturalmente, ambas as opções assumem que não tem cotação de abertura. Se tiver, deve primeiro fechá-la com uma cotação final.

20
20
20
2013-08-08 21:40:45 +0000

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

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

O que torna o terminal MySQL difícil de compreender é que existem diferentes modos para citação simples, citação dupla, e modo normal.

Portanto, para sair do modo de entrada mysql, terá de fazer estes passos:

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

Exemplo mais básico:

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

C:\>

Nunca saiu do modo pré-definido no exemplo acima, pelo que os comandos de saída funcionam correctamente.

Exemplo 2 (é isto que o está a fazer tropeçar).

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 estiver no modo de citação simples ou dupla, não são respeitadas as sequências de fuga. Mesmo Ctrl-C e Ctrl-D são ignorados nestes modos.

Em que um dos 26 universos Ctrl-C não pára um programa independentemente do modo? Talvez nunca se saiba. Bazinga.

1
1
1
2018-12-18 12:37:01 +0000

SQL suporta consultas introduzidas como múltiplas linhas. Apenas quando se introduz um ponto e vírgula ; é que a consulta será executada. Também precisa de ter terminado quaisquer cordas na sua consulta.

Atenção às consultas de cópia e colagem com strings de um pacote de processamento de texto - as aspas podem ter sido substituídas por “aspas inteligentes” e isto vai estragar a sua consulta.

Se introduziu uma consulta não terminada, esta não funciona, e é por isso que escrever exit não funciona - o MySQL pensa que ainda está no meio de uma consulta. O comando de solicitação muda para mostrar que entrada é necessária para terminar a consulta. Por exemplo, uma citação ou dupla citação pode ser necessária. Isto é poderoso e o prompt de comando é útil, mas achei confuso até ler as respostas e comentários sobre este tópico. ler a especificação aqui

O prompt de ‘nível superior’ é:

mysql>

Se vir isto, então pode introduzir um comando, terminá-lo com ; e carregar em enter.

Se vir uma mensagem como esta:

'>
">
->

Então o MySQL está à sua espera para terminar uma string com uma citação ou uma consulta com um ponto e vírgula.

Aqui está como dizer ao MySQL para cancelar a sua consulta não terminada e colocá-lo de volta no prompt principal:

\c

Penso que isto é mais seguro do que terminar e executar a sua consulta não intencional. Depois disto, deverá voltar ao prompt principal e poderá sair com ele:

exit
1
1
1
2019-01-31 16:42:07 +0000

\q faz o trabalho por mim. Utiliza o Terminal Ubuntu.

0
0
0
2018-10-30 12:37:35 +0000

Pode tentar escapar usando Ctrl+Shift+D