Maison > développement back-end > Golang > Pourquoi mon application Go ne peut-elle pas se connecter à ma base de données cloud MongoDB sur Ubuntu ?

Pourquoi mon application Go ne peut-elle pas se connecter à ma base de données cloud MongoDB sur Ubuntu ?

Susan Sarandon
Libérer: 2024-11-26 06:36:11
original
541 Les gens l'ont consulté

Why Can't My Go Application Connect to My MongoDB Cloud Database on Ubuntu?

Erreur de connexion à la base de données Mongo Cloud dans Go sur Ubuntu

Problème

Lors de la tentative de connectez-vous à une base de données Mongo Cloud dans Go sur Ubuntu en utilisant ce qui suit code :

func connectToDataBase() {
    ctx, cancel := context.WithTimeout(context.Background(), 20*time.Second)
    defer cancel()
    client, err := mongo.Connect(ctx, options.Client().ApplyURI(dbURL))
    if err != nil {
        log.Fatal("Error connecting to Database: ", err.Error())
    }
    DB = client.Database("storyfactory")
}
Copier après la connexion

un message d'erreur apparaît :

2019/04/13 00:20:37 Error connecting to Database: error parsing uri (mongodb+srv://User:[email protected]/test?retryWrites=true): lookup cluster0-gpxjk.gcp.mongodb.net on 127.0.0.53:53: cannot unmarshal DNS message
exit status 1
Copier après la connexion

Solution

Ce problème n'est pas directement lié au pilote Go MongoDB mais plutôt à un changement dans la version Go 1.11.x #10622 qui a resserré la façon dont les enregistrements SRV sont lus, suite RFC-2782.

Si un serveur DNS faisant autorité envoie un enregistrement SRV en utilisant la compression de nom de domaine, la fonction net.lookupSRV() renvoie une erreur avec le message « impossible de désorganiser le message DNS ».

Pour résoudre ce problème, envisagez les solutions de contournement suivantes :

  • Utilisez MongoDB non-SRV URI : Cela implique de spécifier manuellement l'hôte et le port de la base de données dans l'URI, au lieu d'utiliser l'enregistrement SRV.
  • Mettre à jour /etc/resolv.conf : Remplacer le serveur de noms avec un serveur DNS conforme et/ou public, tel que 1.1.1.1 ou 8.8.8.8.

Pour pour plus d'informations, reportez-vous à GODRIVER-829.

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!

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