rwi*_*red 25 mysql command-line
在调试SQL语句时,如果我在使用输出大量结果的mysql命令行时意外执行查询(即使查询本身在合理的时间内执行),我知道停止无休止的输出流的唯一方法是CTRL -C.
不幸的是,这让我回到shell中,迫使我登录并再次选择数据库.
为了避免这种情况,我开始使用--sigint-ignore选项运行mysql,以便忽略 CTRL-C.
现在我想要一种中断那些长查询输出的方法.
是否有键盘快捷键可以执行此操作?
Bil*_*win 20
不是键盘快捷键.
唯一的选择是打开另一个会话,使用SHOW PROCESSLIST,然后使用KILL QUERY你要终止的会话.
您还可以使用mysqladmin命令行工具发出这些命令.
无论哪种方式,它都要求您登录.因此,与仅按Ctrl-C相比,它没有多大优势.
Sch*_*ern 17
您可以使用--pager将输出传递给寻呼机,这样less可以控制输出.不仅仅是杀死它,还有分页,搜索甚至存储输出比终端窗口更好.
还有一个--safe-updates或者-U开关也--i-am-a-dummy可以保护你免受无子句updates和deletes的影响,并且自动限制选择为1000(可以用select_limit修改).
所有这些都可以在默认情况下设置~/.my.cnf.
[mysql]
pager
safe-updates
Run Code Online (Sandbox Code Playgroud)
rwi*_*red 12
从目前的mysql文档:
从MySQL 5.1.10开始,键入Control-C会导致mysql尝试终止当前语句.如果无法执行此操作,或者在语句被终止之前再次键入Control-C,则mysql将退出.以前,Control-C导致mysql在所有情况下退出.
由于我使用的是5.0.67版,似乎更新mysql将是最好的解决方案.然而,我接受了Schwern的答案,因为它很快实现并且像梦一样工作.
有点晚了,但也许我的回答会对某人有所帮助。
通过命令行终止特定 mysql 查询的方法是:
运行mysqladmin processlist通过命令查找查询的进程id
运行mysqladmin kill <query_id>。
假设查询 ID 为 123456789,您只需要运行: mysqladmin kill 123456789