首页 > 后端开发 > Golang > 为什么我的 Golang mgo 与 MongoDB Atlas 的连接不断失败,并出现'无法访问服务器”错误?

为什么我的 Golang mgo 与 MongoDB Atlas 的连接不断失败,并出现'无法访问服务器”错误?

Susan Sarandon
发布: 2024-11-27 19:18:13
原创
507 人浏览过

Why Does My Golang mgo Connection to MongoDB Atlas Keep Failing with a

使用 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"}
登录后复制

有关更多见解,请参阅以下内容资源:

  • [tls.Dial()](https://golang.org/pkg/crypto/tls/#Dial)
  • [DialInfo](https:// godoc.org/gopkg.in/mgo.v 2#DialInfo)
  • [DialWithInfo](https://godoc.org/gopkg.in/mgo.v2#DialWithInfo)

更新:

或者, 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中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板