J'ai seulement pu voir que le code a commencé, puis plus rien
Comme vous l'avez compris, c'est parce que DialInfo a par défaut un délai d'attente nul. L'appel sera bloqué pour toujours en attendant qu'une connexion soit établie. Vous pouvez également spécifier un délai d'attente avec :
dialInfo.Timeout = time.Duration(30)
session, err := mgo.DialWithInfo(dialInfo)
Maintenant, je n'obtiens aucun serveur accessible
En effet, globalsign/mgo ne prend pas encore en charge l'URI de la chaîne de connexion SRV. Voir les problèmes 112.Vous pouvez utiliser le format URI de connexion non-srv (MongoDB v3.4), voir une question connexe StackOverflow :41173720.
Vous pouvez utiliser mongo-go-driver à la place si vous souhaitez vous connecter en utilisant l'URI de connexion SRV, par exemple :
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)
}
database := client.Database("go")
collection := database.Collection("atlas")
L'exemple ci-dessus est compatible avec la version actuelle v1.0.0