2015-06-12 88 views
2

我正在使用想要使用Mongo Java库连接到本地MongoDB实例但失败的Scala框架。它用来连接的URI是:Mongo服务器接受来自shell的凭证,但不能从Java/Scala接口接收凭证

mongodb://user:[email protected]:27017/mydb 

这会导致抛出以下异常,当我尝试更新的集合:

com.mongodb.CommandFailureException: { "serverUsed" : "localhost:27017" , "ok" : 0.0 , "errmsg" : "auth failed" , "code" : 18} 

但是,如果我提取从URI参数,并给他们到了Mongo外壳:

$ mongo -u user -p pass --host localhost --port 27017 mydb 

......然后它让我进入!任何人都可以提出为什么这可能是?

可能但不可能是相关的:在运行我的框架的原始环境中,一切运行正常,运行Ubuntu的戴尔笔记本电脑。现在我试图在Virtualbox上运行Ubuntu的Mac笔记本电脑上运行它。一切应该几乎(哈)相同,但显然不是某种程度。

+0

我会检查你的服务器是否接受远程连接,如果你的shell使用与你的java应用程序不同的jdk,或者你的防火墙(iptables也许)在打扰 –

+0

你读过这篇文章:http://stackoverflow.com/问题/ 18216712 /无法验证进入mongo-auth-fails? – user3707125

+0

@ user3707125这个问题似乎涉及作为现有连接的管理员进行身份验证与创建新连接。在我的情况下,我通过两种不同的方式创建一个新的连接(shell与API),得到了相互冲突的响应。 – Sean

回答

0

这是一个版本不匹配,显然。我试着卸载Ubuntu提供的3.0.3,并使用我从mongodb.org下载的2.6.10,并且我的库终于能够连接。

这是我在日志中发现了一条内存中的行,如“在用户文档中找不到凭据”。

男人,我知道在穿越主要版本号时可能会出现一些破损,但是阻止老客户甚至无法连接就显得非常极端。

0

在我的情况下,我不得不将我的mongo驱动程序从v2.12.5升级到v2.13.0以使其工作。