去和MongoDB连接将无法与恐慌日志“无法到达服务器”
问题描述:
我使用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是在netstat
或ps
运行。
我看不到任何进程在ps和bash以外的ps上运行。而且我也没有在netstat上看到它。
这是我已经运行sudo服务mongod启动/停止/重新启动,并与mongo外壳进行测试。我究竟做错了什么?
Err0和err会打印相同的错误消息。
答
首先,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
尝试检查从mgo.ParseURL返回的错误,此示例忽略可能返回的任何错误。另外,尝试'telnet IP:PORT'确保您可以连接到目标主机/端口 –
已更新的代码并返回相同的错误。 telnet只是停止。我的AWS设置有端口打开,不知道发生了什么。 – DeadSupra