使用Go mgo 持續無法存取MongoDB Atlas 中的副本集
使用Golang mgo 庫連接到MongoDB Atlas 副本集時,有時會副本集時,有時會出現“無法存取伺服器”錯誤。這個問題可以透過利用 mgo DialInfo 結構中的自訂 DialServer 函數來解決。
以下程式碼片段示範如何使用自訂TLS 設定成功建立與副本集的連線:
import ( "gopkg.in/mgo.v2" "crypto/tls" "net" ) 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)
在此程式碼中:
或者,mgo.ParseURL() 方法可用來解析 MongoDB Atlas URI 字串。但是,此方法目前不支援 SSL。解決方法是在解析之前從 URI 字串中刪除 ssl=true 行。
以上是如何解決使用 Go 的 mgo 庫連接 MongoDB Atlas 副本集時出現「No Reachable Server」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!