Rumah >pembangunan bahagian belakang >Golang >Mengapa Aplikasi My Go Tidak Boleh Bersambung ke Pangkalan Data Awan MongoDB Saya di Ubuntu?

Mengapa Aplikasi My Go Tidak Boleh Bersambung ke Pangkalan Data Awan MongoDB Saya di Ubuntu?

Susan Sarandon
Susan Sarandonasal
2024-11-26 06:36:11523semak imbas

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

Ralat Menyambung ke Pangkalan Data Awan Mongo dalam Go on Ubuntu

Masalah

Apabila cuba untuk sambung ke pangkalan data Mongo Cloud dalam Go on Ubuntu menggunakan yang berikut kod:

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")
}

mesej ralat muncul:

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

Penyelesaian

Isu ini tidak berkaitan secara langsung dengan pemacu Go MongoDB tetapi sebaliknya kepada perubahan dalam Go versi 1.11.x #10622 yang mengetatkan cara rekod SRV dibaca, mengikuti RFC-2782.

Jika pelayan DNS berwibawa menghantar rekod SRV menggunakan pemampatan nama domain, fungsi net.lookupSRV() melemparkan ralat dengan mesej "tidak boleh menyahmarshal mesej DNS".

Untuk menyelesaikan isu ini, pertimbangkan penyelesaian berikut:

  • Gunakan URI MongoDB bukan SRV: Ini melibatkan penetapan hos dan port pangkalan data secara manual dalam URI, bukannya menggunakan rekod SRV.
  • Kemas kini /etc/resolv.conf: Gantikan pelayan nama dengan pelayan DNS yang mematuhi dan/atau awam, seperti 1.1.1.1 atau 8.8.8.8.

Untuk maklumat lanjut, rujuk GODRIVER-829.

Atas ialah kandungan terperinci Mengapa Aplikasi My Go Tidak Boleh Bersambung ke Pangkalan Data Awan MongoDB Saya di Ubuntu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn