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

mysql命令行中,按下Control-C将取消程序,并将您带回bash。 在psql ,用于postgres,它会杀死当前的查询,并不会停止psql程序。 有什么办法可以在mysql程序中获得Control-C的psql样式行为吗? 我不断发现自己按习惯控制C ,并不得不重新login到MySQL。

控制C不会杀死bash,并在您按下时将其注销。 我认为这是一件好事。 Control-C意味着“停止你在做什么”。

    如果在查询执行过程中按下了5.1中的Ctrl-C ,它将停止执行,并显示“查询执行被中断”

         mysql> INSERT INTO c SELECT rand()* 1000,sha1(rand())FROM c;
        查询由Ctrl + C中止
        错误1317(70100):查询执行中断
    

    进一步的Ctrl-Cbutton杀死客户端。

    如前所述,老版本可能会死亡,所以如果可能, 升级 🙂

    编辑:

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

    像Andy说的那样,它在更高版本中得到修复。

    旧版本中没有相应的键盘快捷键。

    但是你可以用下面的CLI标志防止它发生:

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

    如果你添加一个\ c来结束你的行,而不是使用Ctrl-c,那么你可以在不退出mysql的情况下终止这行。

    简单的回答:截至2014年初,没有办法在mysql中描述行为。 查看相关的bug报告和dba.stackexchange中的一个页面,其中3个不同的人评论说它在v5.5中仍然没有修复 。 另外据我可以告诉长时间谷歌search没有解决方法值得使用(见以下为什么–sigint忽略不好)。 安迪的回答被编辑提到,“看起来它是在5.0.25(和5.1.10)中添加的。” 但他可能在上述错误报告中被误导了[2006年5月3日19:04]。

    –sigint-ignore参数(请参阅Dan Carley的答案)确实会停止mysql在您按ctrl-C时将您放回到shell,但也将删除停止长时间运行查询的function

    这是一种可用性的错误,让你去:-(真的很明显,可能非常容易修复,但仍然在这里是多年以后。