如何从命令行清除未执行的MySQL查询?

如何从命令行清除未执行的MySQL查询?,mysql,command-line,Mysql,Command Line,假设您在MySQL数据库中键入一个命令行查询,需要取消并重新开始。在bashshell中,您只需键入ctrl-c并获得一个新的提示。在MySQL中,ctrl-c将退出客户端并返回shell 例如,我输入了一个长而复杂的SELECT语句,但还没有返回。我意识到我不想发送命令,但我想让命令显示在屏幕上,这样我就可以将它用作参考。我想在不退出MySQL的情况下退出。有什么想法吗 要点:.类型\c 启动MySQL时,您可能会看到以下消息: Type 'help;' or '\h' for help. T

假设您在MySQL数据库中键入一个命令行查询,需要取消并重新开始。在bashshell中,您只需键入ctrl-c并获得一个新的提示。在MySQL中,ctrl-c将退出客户端并返回shell

例如,我输入了一个长而复杂的SELECT语句,但还没有返回。我意识到我不想发送命令,但我想让命令显示在屏幕上,这样我就可以将它用作参考。我想在不退出MySQL的情况下退出。有什么想法吗

要点:.

类型
\c

启动MySQL时,您可能会看到以下消息:

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

它所指的“缓冲区”是命令/查询缓冲区。

如果它是一个长命令,我通常将箭头指向命令的开头并添加乱码,因此它不会执行,但我可以向上箭头并获得访问权限,而无需重新键入它。否则,如果您不想执行它,只需点击向上箭头,它就会滚动您的命令历史记录。找到一个简短的命令,退格,然后键入您想要的任何内容。

取决于shell的键绑定。您可以按home键或使用任何键序列返回开始,在查询前加上X或任何使其语法无效的键,按enter键,就可以了。

首先键入Ctrl+a,然后键入Ctrl+k。

使用以下快捷方式之一删除当前行:

  • 键入Ctrl+u以删除从光标返回到行起点的所有内容
  • 键入Ctrl+k以删除从光标到行尾的所有内容

否则,如前所述,在当前行末尾键入\c(清除命令的快捷方式),然后按Enter键。

如果您希望在Transact-SQL中找到相同的答案,请在mysql 5.7中键入重置

,此问题已得到解决。您现在可以执行
ctrl-c
退出SQL命令行。

但是OP指定了“我希望在屏幕上显示该命令,以便将其用作参考。”从5.5.40-0版开始生效。不适用于5.6.28@Ubuntu。除此之外,这是一个终止当前屏幕窗口的序列。好的,你可以将这个序列设置为这个和那个的快捷方式。这是emacs和bash中的默认序列。当然,这对我最常见的用例不起作用:我忘记了分号,按enter键,而不是用不必要的两行代码混乱我的历史,我宁愿正确地重写命令。作为参考,在mysql 5.7中,这一问题已经得到解决。您现在可以按ctrl-c键来执行此操作。LAMP stack非常古老,用途非常广泛。让我困惑的是,他们花了这么长的时间来修复人们日复一日会遇到的东西。@dkniffin:我知道这是一个老问题,但在搜索中它仍然排在第一位。你能添加你的评论作为答案(这已经是答案)来帮助持续的流量吗?@hat好吧,我添加它作为答案只是一个小问题:你必须在任何分号终止符之前这样做。好的是,它实际上并没有清除它;键入的任何内容都保持可见。(老实说,我不会从留言中猜到这一点,这也是我从未尝试过的原因。)