Utilisation des pilotes Golang pour se connecter à MongoDB Atlas avec une nouvelle syntaxe d'URL
Lors de la connexion à MongoDB Atlas à l'aide des pilotes Golang, des problèmes peuvent survenir en raison de l'utilisation de la nouvelle syntaxe URL introduite dans MongoDB 3.6. Cet article explore les pièges potentiels et propose des solutions.
Erreur : ne pas se connecter
Le code présenté tente d'établir une connexion à l'aide de tls.Dial("tcp" , addr.String(), tlsConfig). Cependant, il ne spécifie pas de délai d'attente, ce qui peut entraîner un blocage indéfini du code. Pour résoudre ce problème, définissez explicitement le délai d'expiration à l'aide de dialInfo.Timeout = time.Duration(30).
Erreur : aucun serveur accessible
Lors de l'utilisation de la fonction mgo.DialWithInfo avec le mécanisme SCRAM, une erreur peut survenir indiquant qu'aucun serveur accessible n'a été trouvé. En effet, le pilote globalsign/mgo ne prend actuellement pas en charge l'URI de la chaîne de connexion SRV. Vous pouvez également utiliser le format URI de connexion non SRV (MongoDB v3.4) ou envisager d'utiliser le pilote mongo-go-driver à la place, qui prend en charge l'URI de connexion SRV.
Exemple de code utilisant Mongo-go -driver
Pour démontrer la connexion à l'aide du pilote mongo-go-driver avec l'URI de connexion SRV, considérez le code suivant extrait :
mongoURI := "mongodb+srv://admin:[email protected]/dbname?ssl=true&retryWrites=true" client, err := mongo.NewClient(options.Client().ApplyURI(mongoURI)) if err != nil { log.Fatal(err) } ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second) defer cancel() err = client.Connect(ctx) defer client.Disconnect(ctx) if err != nil { log.Fatal(err) }
Cet exemple est compatible avec la version actuelle de mongo-go-driver, v1.0.0.
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!