Herstellen einer Verbindung zur MongoDB-Cloud-Datenbank in Go unter Ubuntu
Ein Entwickler ist kürzlich auf ein Problem gestoßen, als er versuchte, mit Go eine Verbindung zu einer MongoDB-Atlas-Datenbank herzustellen auf einem Ubuntu-System. Für die Verbindung wurde das folgende Code-Snippet verwendet:
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") }
Dieser Code hatte zuvor auf einem Windows-Rechner funktioniert, führte jedoch bei der Ausführung unter Ubuntu zu dem Fehler:
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
Lösung
Die Fehlermeldung „DNS-Nachricht kann nicht entmarshaliert werden“ ist nicht spezifisch für den MongoDB Go-Treiber, sondern ein Problem hängt mit der Art und Weise zusammen, wie DNS-Nachrichten in Go Version 1.11.x behandelt werden. Insbesondere führte ein Update der DNS-Nachrichtenanalyselogik in Go 1.11 zu einer strengeren Einhaltung von RFC-2782, was zu Fehlern bei DNS-Antworten führte, die Domänennamenkomprimierung verwenden.
Problemumgehungen
Um dieses Problem zu beheben, können Entwickler die folgenden Problemumgehungen implementieren:
Alternativ können Entwickler ein Upgrade auf eine neuere Version von Go in Betracht ziehen (z. B. 1.12 oder 1.13), wo dieses Problem behoben wurde.
Das obige ist der detaillierte Inhalt vonWarum kann meine Go-Anwendung unter Ubuntu keine Verbindung zu MongoDB Atlas herstellen und wie kann ich das Problem beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!