下表显示出可以看见的各个提示符并简述它们所表示的mysql的状态:

提示符

含义

mysql>

准备好接受新命令。

->

等待多行命令的下一行。

'>

等待下一行,等待以单引号(“'”)开始的字符串的结束。

">

等待下一行,等待以双引号(“"”)开始的字符串的结束。

`>

等待下一行,等待以反斜点(‘`’)开始的识别符的结束。

/*>

等待下一行,等待以/*开始的注释的结束。

当你打算在一个单行上发出一个命令时,通常会“偶然”出现多行语句,但是没有终止分号。在这种情况中,mysql等待进一步输入:

mysql> SELECT USER()
    ->

如果出现这种情况(你认为输完了语句,但是只有一个->提示符响应),很可能mysql正在等待分号。如果你没有注意到提示符的提示,在意识到你需要做什么之前,你可能会呆坐一会儿。输入一个分号完成语句,mysql将执行:

mysql> SELECT USER()
    -> ;
+---------------+
| USER()        |
+---------------+
| xiangziw@localhost |
+---------------+

在字符串收集期间将出现 '> 和 "> 提示符(提示MySQL正等待字符串的结束)。在MySQL中,可以写由‘'’或‘"’字符括起来的字符串 (例如,'hello'或"goodbye"),并且mysql允许输入跨越多行的字符串。当看到一个 '> 或 "> 提示符时,这意味着已经输入了包含以‘'’或‘"’括号字符开始的字符串的一行,但是还没有输入终止字符串的匹配引号。这显示你粗心地省掉了一个引号字符。例如:

mysql> SELECT * FROM my_table WHERE name = 'Smith AND age < 30;
    '>

如果你输入SELECT语句,然后按Enter(回车)键并等待结果,什么都没有出现。不要惊讶,“为什么该查询这么长呢?”,注意">提示符提供的线索。它告诉你mysql期望见到一个未终止字符串的余下部分。(你看见语句中的错误吗?字符串"Smith丢掉了第二个引号。)

走到这一步,你该做什么?最简单的是取消命令。然而,在这种情况下,你不能只是输入\c,因为mysql作为它正在收集的字符串的一部分来解释它!相反,应输入关闭的引号字符(这样mysql知道你完成了字符串),然后输入\c:

mysql> SELECT * FROM my_table WHERE name = 'Smith AND age < 30;
    '> '\c
mysql>

提示符回到mysql>,显示mysql准备好接受一个新命令了。

`> 提示符类似于 '> 和"> 提示符,但表示你已经开始但没有结束以`> 开始的识别符。

知道'>和">提示符的含义很重要,因为如果你错误地输入一个未终止的字符串,任何后面输入的行将要被mysql忽略--包括包含QUIT的行!这可能令人相当困惑,特别是如果取消当前命令前还不知道你需要提供终止引号。

如果你决定不想执行正在输入过程中的一个命令,输入\c取消它:

mysql> SELECT
    -> USER()
    -> \c
mysql>

这里也要注意提示符,在你输入\c以后,它切换回到mysql>,提供反馈以表明mysql准备接受一个新命令。