2017-10-15 73 views
0

我使用mGo作为我的Go Web应用程序到另一个MongoDB系统的驱动程序。所以我没有在同一个系统上运行Mongo。 (URL不是本地主机)。去和MongoDB连接将无法与恐慌日志“无法到达服务器”

但是,我得到“恐慌:无法访问服务器”错误。

这里是转到服务器启动时运行右侧的测试功能:

dialInfo, err0 := mgo.ParseURL("mongodb://1234MY456IP:27017,27018") 
if err0 != nil { 
    panic(err0) 
} 
dialInfo.Direct = true 
dialInfo.FailFast = true 
session, err := mgo.DialWithInfo(dialInfo) 
if err != nil { 
    panic(err) 
} 
defer session.Close() 

一个类似的问题的答案是确保MongoDB是在netstatps运行。

我看不到任何进程在ps和bash以外的ps上运行。而且我也没有在netstat上看到它。

这是我已经运行sudo服务mongod启动/停止/重新启动,并与mongo外壳进行测试。我究竟做错了什么?

Err0和err会打印相同的错误消息。

+1

尝试检查从mgo.ParseURL返回的错误,此示例忽略可能返回的任何错误。另外,尝试'telnet IP:PORT'确保您可以连接到目标主机/端口 –

+0

已更新的代码并返回相同的错误。 telnet只是停止。我的AWS设置有端口打开,不知道发生了什么。 – DeadSupra

回答

1

首先,URI应该遵循mgo URI格式

[mongodb://][user:[email protected]]host1[:port1][,host2[:port2],...][/database][?options] 

更多信息请参见mgo.v2 Dial func

如果要连接到MongoDB的阿特拉斯(或您的服务器需要SSL)又见Connecting to MongoDB Atlas using mgo

第二,确保您可以从您的应用程序服务器达到MongoDB服务器(一个或多个)。您可以使用mongo shell来测试连接(现在消除您的代码问题)。

+0

前段时间我解决了这个问题,但这一定是问题所在:有一个糟糕的mgo URI格式。谢谢回答! – DeadSupra