Mongo:在尝试在主机上运行“whatsmyuri”命令时出现网络错误。

20

我一直在尝试从另一台机器访问我的Mongo实例,但是我遇到了这个错误。我找不到关于whatsmyuri错误的很多参考资料。这是我从外部机器得到的:

$ mongo <IP_ADDRESS>:27017/youtube_advertising -u user -p password

MongoDB shell version: 3.2.0
connecting to: <IP_ADDRESS>:27017/youtube_advertising
2016-02-19T17:10:02.923+0100 E QUERY    [thread1] Error: network error while attempting to run command 'whatsmyuri' on host '<IP_ADDRESS>:27017'  :
connect@src/mongo/shell/mongo.js:226:14
@(connect):1:6

exception: connect failed

我已经修改了/etc/mongod.conf文件,通过端口27017(使用iptables)打开了连接,并重新启动了mongo。我能够通过ssh连接到那台机器。
关于whatsmyuri的搜索,我在mongo上运行了这个命令:
> db.runCommand( { whatsmyuri: 1 } )
{ "you" : "127.0.0.1:36990", "ok" : 1 }

我不确定端口36990是否正确。为了防止万一,我也从那里打开了连接,但仍然没有反应。

有什么想法吗?

更新

查看/var/log/mongodb/mongod.log,当我尝试远程连接时,这就是我得到的结果:

2016-02-19T10:41:07.292-0600 I NETWORK  [initandlisten] connection accepted from <EXT_IP_ADDRESS>:51800 #2 (1 connection now open)
2016-02-19T10:41:07.310-0600 I QUERY    [conn2]     operation isn't supported: 2010
2016-02-19T10:41:07.310-0600 I -        [conn2] Assertion: 16141:cannot translate opcode 2010

日志里有什么有趣的东西吗? - Alex Blex
我只是在更新它 :) - makeMonday
4个回答

16

检查您的版本。这可能有所帮助。

我曾经遇到过同样的问题。在我的情况下,服务器版本是3.2.0-rc2,而mongo shell版本是3.2.1。

将服务器升级到3.2.1解决了这个问题。


我认为我的问题也是因为版本号不同。它们只不过不是3.2.0和3.2.1。 - steoiatsl

5
当我在同一台运行Windows 10的计算机上运行两个版本(3.4和4.2)的MongoDB时,我遇到了这个问题。我运行v3.4 mongod时,在控制台输出中没有出现任何问题,但是运行v3.4 mongo shell时出现了上述错误。检查任务管理器后,发现有一个MongoDB进程(我不确定,但我认为它是v4.2的)正在运行。通过任务管理器结束该进程后,v3.4 mongo shell正常运行,没有错误。

3

使用mongodb-community-shell

在MacOS中,执行brew install mongodb/brew/mongodb-community-shell

这将要求您覆盖链接mongo命令。

brew link --overwrite mongodb-community-shell


虽然这段代码片段可能解决了问题,但包括解释真的有助于提高您的帖子质量。请记住,您正在为未来的读者回答问题,而这些人可能不知道您的代码建议原因。 - Clijsters

1
当mongo客户端和服务器版本不匹配时,就会出现问题。 从客户端卸载MongoDB,并按照此处提供的详细说明进行安装。 https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/ 需要注意的关键步骤是:
sudo apt-get install -y mongodb-org=4.2.7 mongodb-org-server=4.2.7 mongodb-org-shell=4.2.7 mongodb-org-mongos=4.2.7 mongodb-org-tools=4.2.7
注:在我的情况下,服务器的mongo版本为4.2.7。另外一个可以做的事情是从两个系统中卸载MongoDB并进行必要的备份,然后重新安装它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接