使用 Golang mgo 连接到 MongoDB Atlas:副本集持久“无法访问服务器”
尝试连接时通常会出现此错误消息使用 Golang 的 mgo 驱动程序到 MongoDB Atlas 副本集。要解决此问题,请考虑以下步骤:
利用下面提供的 mgo 代码片段:
import ( "gopkg.in/mgo.v2" "crypto/tls" "net" ) // Configure TLS settings tlsConfig := &tls.Config{} // Initialize the DialInfo object dialInfo := &mgo.DialInfo{ Addrs: []string{"prefix1.mongodb.net:27017", "prefix2.mongodb.net:27017", "prefix3.mongodb.net:27017"}, Database: "authDatabaseName", Username: "user", Password: "pass", } // Override the default DialServer method dialInfo.DialServer = func(addr *mgo.ServerAddr) (net.Conn, error) { conn, err := tls.Dial("tcp", addr.String(), tlsConfig) return conn, err } // Establish the connection using DialWithInfo session, err := mgo.DialWithInfo(dialInfo)
请记住,指定单个副本集成员作为种子同样有效选项:
Addrs: []string{"prefix2.mongodb.net:27017"}
有关更多见解,请参阅以下内容资源:
更新:
或者, mgo.ParseURL() 方法可用于解释 MongoDB Atlas URI 字符串。但是,它目前缺乏对 SSL 的支持。
作为解决方法,您可以在解析之前删除 ssl=true 参数:
// URI without ssl=true var mongoURI = "mongodb://username:[email protected],prefix2.mongodb.net,prefix3.mongodb.net/dbName?replicaSet=replName&authSource=admin" dialInfo, err := mgo.ParseURL(mongoURI) // Subsequent code remains similar to the previous example.
以上是为什么我的 Golang mgo 与 MongoDB Atlas 的连接不断失败,并出现'无法访问服务器”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!