我一直试图从另一台机器访问我的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
答案 0 :(得分:4)
检查您的版本。这可能有所帮助。
我遇到了同样的问题。在我的例子中,服务器是版本3.2.0-rc2,而mongo shell版本是3.2.1。
将服务器升级到3.2.1解决了问题。
答案 1 :(得分:3)
当我在同一台Windows 10计算机上运行两个版本(3.4和4.2)的MongoDB时,这个问题使我感到困扰。我运行v3.4 mongod时在控制台输出中未提及任何问题,但是随后运行v3.4 mongo shell产生了以上错误。检查任务管理器,结果发现有一个MongoDB进程(我不确定,但我认为它适用于v4.2)。通过任务管理器结束该过程后,v3.4 mongo shell运行正常,没有错误。
答案 2 :(得分:1)
使用mongodb-community-shell
在MacO brew install mongodb/brew/mongodb-community-shell
它将要求您使用mongo命令覆盖链接。
brew link --overwrite mongodb-community-shell
答案 3 :(得分: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,然后重新安装。