Maison > développement back-end > Golang > Comment résoudre les erreurs « Aucun serveur accessible » lors de la connexion à MongoDB Atlas avec le mgo de Golang ?

Comment résoudre les erreurs « Aucun serveur accessible » lors de la connexion à MongoDB Atlas avec le mgo de Golang ?

Patricia Arquette
Libérer: 2024-11-27 20:01:11
original
604 Les gens l'ont consulté

How to Resolve

Résolution des problèmes de connexion « Aucun serveur accessible » avec MongoDB Atlas et Mgo de Golang

Lors de la connexion à un jeu de répliques MongoDB Atlas à l'aide du mgo de Golang, vous pourriez rencontrer l'erreur frustrante « aucun serveur accessible ». Malgré les tentatives de diverses configurations d'URL et de numérotation, le problème persiste.

Pour résoudre ce problème, envisagez la solution suivante à l'aide de la fonction DialWithInfo de Mgo :

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)
Copier après la connexion

Dans ce code, la fonction DialInfo.DialServer configure Connectivité SSL aux membres du jeu de réplicas. Vous pouvez également spécifier un seul membre comme graine, tel que "prefix2.mongodb.net:27017" pour Addrs.

Alternativement, utiliser ParseURL pour analyser la chaîne URI MongoDB Atlas est une autre option. Cependant, actuellement, SSL n'est pas pris en charge avec cette méthode (mgo.V2 PR:304).

Pour contourner ce problème, supprimez la ligne ssl=true avant d'analyser :

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

//Below part is similar to above. 
tlsConfig := &tls.Config{}
dialInfo.DialServer = func(addr *mgo.ServerAddr) (net.Conn, error) {
    conn, err := tls.Dial("tcp", addr.String(), tlsConfig)
    return conn, err
}
session, _ := mgo.DialWithInfo(dialInfo)
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal