Come uscire dal prompt dei comandi di MySQL?


37

Ho installato MySQL. Ora sono bloccato nel prompt dei comandi di MySQL. Ho eseguito MySQL in questo modo:

C:\>mysql.exe
mysql>

Quindi scrivo alcuni comandi non validi come questo:

mysql> /version
    ->

E indipendentemente da ciò che scrivo, non riesco a uscire dalla riga di comando / terminale MySQL. Per esempio:

  • exit

  • CtrlC

  • CtrlD

  • quit

  • Ctrl\

  • CtrlZ

  • bye

Come posso uscire dal terminale MySQL al terminale predefinito?


1
Hai provato a spegnere il computer? / s
VarunAgw

Risposte:


29

Per aggiungere l'altra risposta, è possibile semplicemente terminare la query non valida corrente utilizzando un punto e virgola:

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

c:\mysql\bin>

O usando \G(che dovrebbe far visualizzare le righe in verticale):

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

c:\mysql\bin>

Naturalmente, entrambe le opzioni presumono che non ci siano preventivi di apertura. Se lo fai, devi prima chiuderlo con una citazione finale.


Quello che mi aveva fatto inciampare era che non avevo compreso appieno come il terminale mysql tratta l'input nelle sue varie modalità di preventivo come definito qui: dev.mysql.com/doc/refman/5.0/en/entering-queries.html Ci sono 5 modalità : ->, '>, ">, `>, e /*> ho provato di nuovo sulle ultime versioni, e ha funzionato correttamente. Quindi sembra un bug corretto.
Eric Leschinski,

Il punto e virgola non funziona ... niente funziona. Se lo faccio \ G si comporta come se uscisse da quella stupida modalità ->, ma poi ritorna in esso dopo un altro comando. Perché mysql è così stupido al riguardo?
Amalgovinus

La vera risposta è che il mysql cli di Windows è rovinato e può bloccarsi. Il modo più semplice su Windows è solo usare git bash
Amalgovinus,

20

Perché ctrl-c non esce dalla modalità di input mysql in Windows?

Perché hai detto a MySQL di interpretare i tuoi comandi di uscita come input valido.

Ciò che rende difficile capire il terminale MySQL è che ci sono diverse modalità per virgolette singole, virgolette doppie e modalità normale.

Quindi, per uscire dalla modalità di input mysql, dovrai eseguire questi passaggi:

  1. Esci dalla doppia virgoletta.
  2. Esci dalla modalità a virgoletta singola.
  3. Esci dalla modalità mysql.
  4. Chiudi mysql al terminale predefinito.

L'esempio più semplice:

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

C:\>

Non hai mai lasciato la modalità predefinita nell'esempio sopra, quindi i comandi di uscita funzionano correttamente.

Esempio 2 (questo è ciò che ti sta inciampando).

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

Mentre ci si trova in modalità a virgoletta singola o doppia, non vengono rispettate le sequenze di escape. Anche Ctrl-Ce Ctrl-Dsono ignorati in queste modalità.

In quale dei 26 universi Ctrl-C non ferma un programma indipendentemente dalla modalità? Forse non lo sapremo mai. Bazinga.


1
Immagino che le citazioni sfuggano alle cose e sta aspettando ulteriori input. Questo in realtà ha senso quando puoi archiviare qualcosa come "exit" in un database
Journeyman Geek

@Eric, mentre Ctrl-D non funziona quando si è in modalità preventivo, Ctrl-C funziona ancora se si utilizzano client più vecchi come mysql 5.5.43 e mysql 5.1.73. Testato su Win 8.1.
Pacerier,

Ctrl-c continua a non lasciarlo per me. Non ricevo mai il messaggio "ciao". Inoltre, quando sono in modalità ->, l'unica cosa che posso fare è Ctrl + C per uscire? Assolutamente nient'altro riceve una risposta dall'interprete. Mysql è intuitivo nella maggior parte dei casi, ma questo non è uno di questi casi.
Amalgovinus,

Forse il tuo emulatore di terminale sta divorando i tuoi codici Ctrl e inviando un codice chiave diverso al processo che interpreta come testo. Sento il tuo dolore, quando ho scritto questo post nel 2013, era per questo problema e un milione di altri proprio come il fatto che la mia ex macchina Windows fosse bucata e buttata nella spazzatura per contaminare il mio PC, è seduta in una discarica da qualche parte . L'unico modo che ho trovato per risolvere questo problema è stato quello di sbarazzarmi del sistema operativo Windows e migrare verso ideologie Mac e Linux che non commettono questi crimini di inserimento di intermediari per impedire al Ctrl-C di funzionare.
Eric Leschinski,

1

SQL supporta le query immesse come più righe. Solo quando si inserisce un punto e virgola ;, la query verrà eseguita. È inoltre necessario aver terminato qualsiasi stringa nella query.

Fai attenzione a copiare e incollare le query con stringhe da un pacchetto di elaborazione testi: le virgolette potrebbero essere state sostituite da "virgolette intelligenti" e questo incasinerà la tua query.

Se hai inserito una query non terminata, non viene eseguita ed è per questo che digitando exit non funziona - MySQL pensa che tu sia ancora nel mezzo di una query. Il prompt dei comandi cambia per mostrare quale input è necessario per terminare la query. Ad esempio, potrebbe essere necessario un preventivo o una doppia citazione. Questo è potente e il prompt dei comandi è utile, ma l'ho trovato confuso fino a quando non ho letto le risposte e i commenti su questo thread.

leggi le specifiche qui

Il prompt di "livello superiore" è:

mysql>

Se vedi questo, puoi inserire un comando, finirlo con; e premere invio.

Se vedi un prompt come questo:

'>
">
->

Quindi MySQL ti aspetta per terminare una stringa con un preventivo o una query con un punto e virgola.

Ecco come dire a MySQL di annullare la query non terminata incasinata e riportarti al prompt principale:

\c

Penso che sia più sicuro che terminare ed eseguire la tua query non intenzionale. Dopodiché, dovresti tornare al prompt> e puoi uscire con:

exit


0

Puoi provare a scappare usando Ctrl+ Shift+D


3
Questo è un artefatto dell'emulatore di terminale specifico che stai utilizzando, quindi sarebbe utile sapere quale è il tuo. Apparentemente il tuo ha rimappato Ctrl-Maiusc-D a un codice chiave che il processo mysql interpreta per significare exit. In questo caso, dovresti essere in grado di rimappare i codici chiave nell'emulatore di terminale in modo da non dover ottenere il tunnel carpale per uscire da un programma.
Eric Leschinski,
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.