Heim >Backend-Entwicklung >Golang >Warum schlägt meine Golang-mgo-Verbindung zu MongoDB Atlas ständig mit der Fehlermeldung „Kein erreichbarer Server' fehl?

Warum schlägt meine Golang-mgo-Verbindung zu MongoDB Atlas ständig mit der Fehlermeldung „Kein erreichbarer Server' fehl?

Susan Sarandon
Susan SarandonOriginal
2024-11-27 19:18:13412Durchsuche

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

Herstellen einer Verbindung zu MongoDB Atlas mithilfe von Golang MGO: Permanentes „Kein erreichbarer Server“ für den Replikatsatz

Diese Fehlermeldung tritt häufig auf, wenn versucht wird, eine Verbindung herzustellen zu einem MongoDB Atlas-Replikatsatz mithilfe des MGO-Treibers von Golang. Um dieses Problem zu beheben, ziehen Sie die folgenden Schritte in Betracht:

Verwenden Sie das unten bereitgestellte MGO-Code-Snippet:

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)

Beachten Sie, dass die Angabe eines einzelnen Replikatsatzmitglieds als Startwert gleichermaßen gültig ist Option:

Addrs: []string{"prefix2.mongodb.net:27017"}

Weitere Einblicke finden Sie im Folgenden Ressourcen:

  • [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)

Update:

Alternativ: Die Methode mgo.ParseURL() kann zur Interpretation der MongoDB Atlas-URI-Zeichenfolge verwendet werden. Derzeit fehlt jedoch die Unterstützung für SSL.

Um dieses Problem zu umgehen, können Sie den Parameter ssl=true vor dem Parsen entfernen:

// 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.

Das obige ist der detaillierte Inhalt vonWarum schlägt meine Golang-mgo-Verbindung zu MongoDB Atlas ständig mit der Fehlermeldung „Kein erreichbarer Server' fehl?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn