【发布时间】:2015-01-12 11:19:09
【问题描述】:
我不敢相信我不得不问这个问题,但是我如何停止我刚刚运行的查询,它现在正在运行,并且显然需要很长时间才能在 Mongo shell 中完成? Control+C 似乎使 shell 崩溃,并吐出大量错误。 this post 中建议的愚蠢解决方案当然不会做任何事情。我知道我可以打开另一个终端选项卡并
运行db.currentOp(),找到操作ID,然后运行db.killOp(),但我不敢相信这是唯一的解决方案。我一定遗漏了一些明显的东西。
【问题讨论】:
-
hmm ctrl+c 打破控制台听起来很糟糕,这是我通常使用的
-
另外,Ctrl+C 确实 not 一定会杀死操作。底线:除了 killOp,停止操作的唯一可靠方法是停止集群。
-
使用
db.currentOp(),然后使用db.killOp()。 Ctrl-c 和其他问题与取消已经在数据库上运行的操作无关。 -
@wdberkeley 所以 MongoDB 在检测到 SIGTERM 时不会杀死操作?对我来说听起来违反直觉
-
这不仅违反直觉,而且是 Mongo 团队的一个极其糟糕的 UI 决定。显然我一定是“错误”地使用了 Mongo,因为通常当我运行查询时,并在几秒钟内意识到查询将花费比它应该的时间更长的时间(也许索引被遗忘了;也许我正在测试一个复杂的复合索引,也许我打错了,它现在正在搜索一些不存在的未索引字段)我想终止查询并返回我的 Mongo shell。令我感到奇怪的是,Mongo 不像其他主流数据库软件和 shell 那样在 Control-C 上执行此操作。
标签: mongodb mongodb-query