首页 >后端开发 >Golang >为什么我的 Go mgo 驱动程序无法连接 MongoDB Atlas 副本集,并出现'No Reachable Server”错误?

为什么我的 Go mgo 驱动程序无法连接 MongoDB Atlas 副本集,并出现'No Reachable Server”错误?

Susan Sarandon
Susan Sarandon原创
2024-11-30 09:57:10620浏览

Why Does My Go mgo Driver Fail to Connect to MongoDB Atlas Replica Set with a

使用 Golang Mgo 连接 MongoDB Atlas:解决“副本集无法访问服务器”问题

问题:

使用 Golang 连接到 MongoDB Atlas 上的副本集时mgo 驱动程序,尽管与其他语言和常规 Mongo 客户端成功连接,但仍遇到“无法访问服务器”的错误消息。

答案:

修改版本下面的 mgo 代码片段使用提供的示例成功建立了与 MongoDB Atlas 的连接参数:

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)

注意事项:

  • 只能指定一个副本集成员作为种子,如:Addrs: []string {"prefix2.mongodb.net:27017"}.
  • mgo.ParseURL()方法当前不支持 SSL,因此使用它来解析 MongoDB Atlas URI 字符串需要事先删除 ssl=true 行。

以上是为什么我的 Go mgo 驱动程序无法连接 MongoDB Atlas 副本集,并出现'No Reachable Server”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn