MySQL控制台中有些东西让我发疯。当我按ctrl+ c取消当前键入的命令时,终端退出。
在每一个终端我知道(*nix
码头,Python
,PostgreSQL
),ctrl+ c取消当前命令和ctrl+ d离开终端。
此问题已在2003年报告,此后多次发生。
有没有办法:
- 更改此行为,或者
- 说服MySQL开发团队这真的很烦人吗?
MySQL控制台中有些东西让我发疯。当我按ctrl+ c取消当前键入的命令时,终端退出。
在每一个终端我知道(*nix
码头,Python
,PostgreSQL
),ctrl+ c取消当前命令和ctrl+ d离开终端。
此问题已在2003年报告,此后多次发生。
有没有办法:
Answers:
至少客户端的5.6.14版本具有--sigint-ignore选项,以完全忽略SIGINT处理程序。它似乎是在2004年10月7日添加的 -至少已经有一段时间了。我刚刚进行了测试,它确实使CTRL-C取消了MySQL客户端。但是,如果CTRL-C也像在BASH shell上一样取消当前命令行缓冲区,那就好了-就像PostgreSQL CLI一样。我对MySQL进行了分叉,以了解实现此类事情的难度。如果准备就绪,我将发布带有tarball链接的Homebrew公式。
更新1 曾经有过哪一天?我创建了承诺的补丁程序,然后决定创建一个视频来演示它。有效!但是,我无法禁用它!好吧,事实证明,MySQL实际上在去年将功能引入了核心客户端!是的,此问题的A至少要下载MySQL 5.7.3-794-g901d27f的客户端。它具有我们都想要的功能。
示例 在命令行中只需添加--sigint-ignore标志:
mysql --host=127.0.0.1 --port=8900 --user=root -p --sigint-ignore DBNAME
或者,像我一样,在$HOME/.my.cnf
(%USERPROFILE%/.my.cnf
在Windows上)为您的用户帐户创建一个MySQL配置文件,内容如下:
[mysql]
sigint-ignore=TRUE
这将确保所有mysql
执行都忽略烦人的Ctrl-C并表现为良好的SQL客户端。
当ctrl+ c行为令人讨厌时,您仍然可以使用\c
取消当前查询。您只需要训练自己,当使用mysql CLI时,请使用\c
而不是ctrl+ c!
您正在使用哪个版本的客户端?我记得这是较旧的行为,但是最新版本的5.1和5.5似乎只是取消了正在运行的命令而没有退出客户端。再有可能是我使用的是Percona版本。如果是这样,您可以尝试仅运行他们的客户端。