如何退出MySQL命令提示符?


37

我已经安装了MySQL。现在,我被困在MySQL命令提示符下。我像这样运行MySQL:

C:\>mysql.exe
mysql>

然后我输入一些无效的命令,像这样:

mysql> /version
    ->

而且,无论我键入什么内容,都无法退出MySQL命令行/终端。例如:

  • exit

  • CtrlC

  • CtrlD

  • quit

  • Ctrl\

  • CtrlZ

  • bye

如何退出MySQL终端到默认终端?


1
您是否尝试关闭计算机?/ s
VarunAgw

Answers:


29

要添加其他答案,您可以使用分号简单地结束当前无效查询:

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

c:\mysql\bin>

或使用\G(应该使行垂直显示):

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

c:\mysql\bin>

当然,这两个选项均假定您没有开盘报价。如果这样做,则必须首先用结束引号将其关闭。


让我感到震惊的是,我不完全了解mysql终端如何以其在此处定义的各种引用模式对待输入:dev.mysql.com/doc/refman/5.0/en/entering-queries.html 有5种模式:->'>">`>,和/*> 我再次测试了它的最新版本,它工作正常。因此,它看起来像是固定的错误。
Eric Leschinski 2015年

分号不起作用...什么也不起作用。如果我执行\ G,它的作用就好像退出了那个愚蠢的->模式,但是在另一个命令之后又回到了它。为什么mysql对此如此愚蠢?
Amalgovinus

真正的答案是,Windows的mysql cli搞砸了并且会卡住。在Windows上最简单的方法是使用git bash
Amalgovinus

20

为什么ctrl-c在Windows中不退出mysql输入模式?

因为您已经告诉MySQL将退出命令解释为有效输入。

使MySQL终端难以理解的是单引号,双引号和普通模式有不同的模式。

因此,要退出mysql输入模式,您将必须执行以下步骤:

  1. 退出双引号模式。
  2. 摆脱单引号模式。
  3. 退出mysql模式。
  4. 退出mysql回到默认终端。

最基本的例子:

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

C:\>

在上面的示例中,您从未离开默认模式,因此退出命令可以正常工作。

示例2(这就是使您绊倒的原因)。

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

当您处于单引号模式或双引号模式时,不考虑转义序列。在这些模式下,甚至Ctrl-CCtrl-D被忽略。

无论模式如何,Ctrl-C都不会在26个Universe中的哪个停止程序?我们可能永远不会知道。巴津加。


1
我猜引号会引起麻烦,并且它在等待更多输入。这实际上一种有意义的,当你可以存储就像一个数据库中的“退出”
中级野人

@Eric,虽然在引用模式下Ctrl-D不起作用,如果使用的是旧客户端(例如mysql 5.5.43和mysql 5.1.73),则Ctrl-C 仍然可以工作。测试胜利8.1。
Pacerier 2015年

Ctrl-c仍然不适合我。我从没有收到“再见”消息。此外,当我坚持使用->模式时,我唯一能做的就是Ctrl + C退出?绝对没有其他人从解释器中得到答复。Mysql在大多数情况下是直观的,但事实并非如此。
Amalgovinus

也许您的终端仿真器正在吞噬Ctrl代码,并向其解释为文本的进程发送其他键代码。我感到您很痛苦,回到2013年,当我写这篇文章时,正是因为这个问题以及其他一百万个类似的原因,我以前的Windows机器被核对并扔进了垃圾箱中,以污染我的PC,它坐落在垃圾场中。我发现解决此问题的唯一方法是摆脱Windows操作系统,并迁移到Mac和Linux意识形态,这些意识形态不会犯插入中间人以阻止Ctrl-C正常工作的罪行。
Eric Leschinski

1

SQL支持以多行形式输入的查询。仅当输入分号;时,查询才会执行。您还需要终止查询中的所有字符串。

注意使用文字处理程序包中的字符串复制和粘贴查询-报价可能已替换为“智能引号”,这将使查询混乱。

如果您输入了未终止的查询,则该查询将不会运行,这就是为什么键入exit无效的原因-MySQL认为您仍在查询中间。命令提示符将更改以显示终止查询所需的输入。例如,可能需要引号或双引号。这很强大,命令提示符很有用,但是直到我阅读了关于该线程的答案和评论后,我才感到困惑。

在此处阅读规格

“顶级”提示是:

mysql>

如果看到此内容,则可以输入命令,并以;结尾。然后按回车。

如果看到这样的提示:

'>
">
->

然后,MySQL等待您使用引号将字符串终止或使用分号将查询终止。

这是告诉MySQL取消混乱的未终止查询并使您返回主提示符的方法:

\c

我认为这比终止并运行意外查询更安全。之后,您应该回到>提示符,并可以退出:

exit


0

您可以尝试使用Ctrl+ Shift+ 逃脱D


3
这是您正在使用的特定终端仿真器的构件,因此了解哪个是您的将很有帮助。您显然已经将Ctrl-Shift-D重新映射为mysql进程解释为退出的键码。在这种情况下,您应该能够在终端仿真器中重新映射键控代码,因此不必退出腕管即可退出程序。
Eric Leschinski
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.