MySQL 控制台中有一些东西让我抓狂。当我点击ctrl+c取消当前输入的命令时,终端退出。
在我知道的每个终端(*nix
终端,,Python
)PostgreSQL
中,ctrl+c取消当前命令并ctrl+d退出终端。
此问题已在 2003 年报告,此后多次遇到问题。
有没有办法:
- 更改此行为,或
- 说服 MySQL 开发团队这真的很烦人?
MySQL 控制台中有一些东西让我抓狂。当我点击ctrl+c取消当前输入的命令时,终端退出。
在我知道的每个终端(*nix
终端,,Python
)PostgreSQL
中,ctrl+c取消当前命令并ctrl+d退出终端。
此问题已在 2003 年报告,此后多次遇到问题。
有没有办法:
至少版本 5.6.14 的客户端具有--sigint-ignore选项以完全忽略 SIGINT 处理程序。它似乎是在 2004 年 10 月 7 日添加的——所以至少已经有一段时间了。我刚刚对其进行了测试,它确实阻止了 CTRL-C 取消 MySQL 客户端。但是,如果 CTRL-C 也能像在 BASH shell 上那样取消当前命令行缓冲区,那就太好了——就像 PostgreSQL CLI 那样。我已经分叉了 MySQL,以了解实现一些这样的事情有多难。当/如果准备好时,我将发布带有 tarball 链接的 Homebrew 公式。
更新 1 曾经有过这样的日子吗?我创建了承诺的补丁,然后我决定制作一个视频来演示它。有效!但是,我无法禁用它!好吧,事实证明 MySQL 实际上在去年将功能添加到了核心客户端!是的,A到这个Q是至少要下载MySQL 5.7.3-794-g901d27f的客户端。它具有我们都想要的功能。
示例 从命令行只需添加 --sigint-ignore 标志:
或者,像我一样在
$HOME/.my.cnf
(%USERPROFILE%/.my.cnf
在 Windows 上)为您的用户帐户创建一个 MySQL 配置文件,其中包含以下内容:这将确保所有
mysql
执行都忽略烦人的 Ctrl-C 并表现得像一个好的 SQL 客户端。虽然ctrl+c行为很烦人,但您仍然可以使用它
\c
来取消当前查询。您只需要训练自己,在使用 mysql CLI 时,使用\c
而不是ctrl+ c!好消息: #66583终于修复了 MySQL 的 ^C 功能。
从5.7.0更新日志:
要更改行为,请下载 mysql CLI 的源代码并修改
SIGINT
处理程序以按照您认为合适的方式运行,然后重新编译并安装。您使用的是什么版本的客户端?我记得这是较旧的行为,但最近版本的 5.1 和 5.5 似乎只是取消了正在运行的命令而不退出客户端。再说一次,我可能正在使用 Percona 构建。如果是这种情况,您可以尝试运行他们的客户端。