>백엔드 개발 >Golang >MongoDB Atlas에 대한 Golang mgo 연결이 \'접근 가능한 서버 없음\' 오류로 인해 계속 실패하는 이유는 무엇입니까?

MongoDB Atlas에 대한 Golang mgo 연결이 \'접근 가능한 서버 없음\' 오류로 인해 계속 실패하는 이유는 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-27 19:18:13412검색

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)

업데이트:

또는, MongoDB Atlas URI 문자열을 해석하기 위해 mgo.ParseURL() 메소드를 사용할 수 있습니다. 그러나 현재 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.

위 내용은 MongoDB Atlas에 대한 Golang mgo 연결이 \'접근 가능한 서버 없음\' 오류로 인해 계속 실패하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.