2017-10-15 95 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