使用Go mgo 連接到MongoDB Atlas:解決「無法存取伺服器」問題
嘗試使用以下方式連接到MongoDB Atlas 副本集時Go 的mgo 驅動程序,您可能會遇到持續錯誤「無法存取伺服器」。即使您可以使用相同的連接字串成功連接其他語言,也可能會出現此問題。
此問題的根本原因通常在於 SSL 連線參數配置缺失或不正確。若要與 MongoDB Atlas 建立安全連接,您必須使用 TLS 設定。下面的程式碼片段示範如何設定SSL 連線:
package main import ( "gopkg.in/mgo.v2" "crypto/tls" "net" ) func main() { tlsConfig := &tls.Config{} dialInfo := &mgo.DialInfo{ Addrs: []string{"prefix1.mongodb.net:27017", "prefix2.mongodb.net:27017", "prefix3.mongodb.net:27017"}, Database: "authDatabaseName", Username: "user", Password: "pass", } dialInfo.DialServer = func(addr *mgo.ServerAddr) (net.Conn, error) { conn, err := tls.Dial("tcp", addr.String(), tlsConfig) return conn, err } session, err := mgo.DialWithInfo(dialInfo) if err != nil { // Handle error } // Use the session to interact with MongoDB Atlas }
替代解:
另一個選項是使用ParseURL 方法來解析MongoDB Atlas URI 字串。但是,此方法目前不支援 SSL (mgo.V2 PR:304)。解決方法是在解析之前從 URI 中刪除“ssl=true”行。
// URI without ssl=true mongoURI := "mongodb://username:[email protected],prefix2.mongodb.net,prefix3.mongodb.net/dbName?replicaSet=replName&authSource=admin" dialInfo, err := mgo.ParseURL(mongoURI) // Below part is similar to the previous example. // ... (remainder of code)
透過執行以下步驟,您可以使用 mgo 驅動程式成功連接到 MongoDB Atlas 並解決「無法存取伺服器」的問題「問題。
以上是如何解決使用 Go 的 mgo 驅動程式連線 MongoDB Atlas 時出現「No Reachable Server」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!