修复 mysql 命令行程序中的 Control-C?

修复 mysql 命令行程序中的 Control-C?

mysql命令行中,按Control-C将取消程序并返回 bash。在psqlpostgres 中,它将终止当前查询并且不会停止 psql 程序。有没有办法Control-C在 mysql 程序中获取 psql 样式的行为?我发现自己总是Control-C习惯性地按 并不得不重新登录 mysql。

Control C不会终止 bash,也不会在您按下它时将您注销。我认为这是一件好事。Control-C意思是“停止您正在做的事情”。

答案1

如果你在 5.1 版中,查询执行期间按 Ctrl-C,它将暂停执行并显示“查询执行被中断”消息

    mysql> 插入 c 选择 rand()*1000,sha1(rand()) 从 c;
    按 Ctrl+C 中止查询
    错误 1317 (70100):查询执行被中断

再次Ctrl-C按下将会杀死客户端。

旧版本死得很惨,正如问题中提到的,所以升级如果可能的话 :)

编辑:

看起来它是在 5.0.25(和 5.1.10)中添加的。

答案2

正如安迪所说,这个问题在后来的版本中得到了修复。

旧版本中没有等效的键盘快捷键。

但是您可以使用以下 CLI 标志来防止这种情况发生:

--sigint-ignore

Ignore SIGINT signals (typically the result of typing Control-C).

答案3

如果在行尾添加 \c 而不是使用 Ctrl-c,那么您可以在不退出 mysql 的情况下删除该行。

答案4

简短回答:截至 2014 年初,mysql 中还没有办法实现上述行为。请参阅相关错误报告dba.stackexchange 上有一个页面,其中有 3 个不同的人评论说它在 v5.5 中仍然没有修复。而且据我所知,经过长时间的谷歌搜索,没有值得使用的解决方法(请参阅下文,了解为什么 --sigint-ignore 不好)。Andy 的回答经过编辑,提到“看起来它是在 5.0.25(和 5.1.10)中添加的。”但他可能被上述错误报告中日期为 [2006 年 5 月 3 日 19:04] 的评论误导了。

--sigint-ignore 参数(参见 Dan Carley 的回答)确实会阻止 mysql 在按下 ctrl-C 时将你带回 shell,但也会删除停止长时间运行的查询的功能

这种可用性错误会让你大吃一惊 :-( 确实很明显,而且可能极容易修复,但多年后它仍然存在。

相关内容