>백엔드 개발 >Golang >Go\의 mgo 드라이버를 사용하여 MongoDB Atlas에 연결할 때 \'연결 가능한 서버 없음\' 오류를 해결하는 방법은 무엇입니까?

Go\의 mgo 드라이버를 사용하여 MongoDB Atlas에 연결할 때 \'연결 가능한 서버 없음\' 오류를 해결하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-11 01:33:09930검색

How to Resolve the

Go mgo를 사용하여 MongoDB Atlas에 연결: "접근 가능한 서버 없음" 문제 해결

다음을 사용하여 MongoDB Atlas 복제본 세트에 연결을 시도하는 경우 Go용 mgo 드라이버를 사용하는 경우 "접근할 수 있는 서버가 없습니다."라는 오류가 계속 발생할 수 있습니다. 동일한 연결 문자열을 사용하여 다른 언어와 성공적으로 연결할 수 있는 경우에도 이 문제가 발생할 수 있습니다.

이 문제의 근본 원인은 SSL 연결 매개변수의 누락 또는 잘못된 구성에 있는 경우가 많습니다. MongoDB Atlas와 보안 연결을 설정하려면 TLS 구성을 사용해야 합니다. 다음은 SSL에 대한 연결을 구성하는 방법을 보여주는 코드 조각입니다.

package main

import (
    "gopkg.in/mgo.v2"
    "crypto/tls"
    "net"
)

func main() {
    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)
    if err != nil {
        // Handle error
    }

    // Use the session to interact with MongoDB Atlas
}

대체 솔루션:

또 다른 옵션은 ParseURL 메서드를 사용하여 MongoDB를 구문 분석하는 것입니다. 아틀라스 URI 문자열. 그러나 이 방법은 현재 SSL(mgo.V2 PR:304)을 지원하지 않습니다. 해결 방법은 구문 분석하기 전에 URI에서 "ssl=true" 줄을 제거하는 것입니다.

// URI without ssl=true
mongoURI := "mongodb://username:[email protected],prefix2.mongodb.net,prefix3.mongodb.net/dbName?replicaSet=replName&authSource=admin"

dialInfo, err := mgo.ParseURL(mongoURI)

// Below part is similar to the previous example.
// ... (remainder of code)

이 단계를 따르면 mgo 드라이버를 사용하여 MongoDB Atlas에 성공적으로 연결하고 "접속할 수 없는 서버 없음" 문제를 해결할 수 있습니다. " 문제.

위 내용은 Go\의 mgo 드라이버를 사용하여 MongoDB Atlas에 연결할 때 \'연결 가능한 서버 없음\' 오류를 해결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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