Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menyelesaikan Ralat \'Tiada Pelayan Boleh Dicapai\' Semasa Menyambung ke MongoDB Atlas dengan Pemacu mgo Go?

Bagaimana untuk Menyelesaikan Ralat \'Tiada Pelayan Boleh Dicapai\' Semasa Menyambung ke MongoDB Atlas dengan Pemacu mgo Go?

Linda Hamilton
Linda Hamiltonasal
2024-12-11 01:33:09930semak imbas

How to Resolve the

Menyambung ke MongoDB Atlas dengan Go mgo: Menyelesaikan Isu "Tiada Pelayan Boleh Dicapai"

Apabila cuba menyambung ke set replika Atlas MongoDB menggunakan pemacu mgo untuk Go, anda mungkin menghadapi ralat berterusan "tiada pelayan boleh dicapai." Isu ini boleh timbul walaupun anda berjaya menyambung dengan bahasa lain menggunakan rentetan sambungan yang sama.

Punca masalah ini selalunya terletak pada konfigurasi parameter sambungan SSL yang hilang atau salah. Untuk mewujudkan sambungan selamat dengan MongoDB Atlas, anda mesti menggunakan konfigurasi TLS. Berikut ialah coretan kod yang menunjukkan cara mengkonfigurasi sambungan anda untuk SSL:

package main

import (
    "gopkg.in/mgo.v2"
    "crypto/tls"
    "net"
)

func main() {
    tlsConfig := &tls.Config{}

    dialInfo := &mgo.DialInfo{
        Addrs: []string{"prefix1.mongodb.net:27017",
            "prefix2.mongodb.net:27017",
            "prefix3.mongodb.net:27017"},
        Database: "authDatabaseName",
        Username: "user",
        Password: "pass",
    }
    dialInfo.DialServer = func(addr *mgo.ServerAddr) (net.Conn, error) {
        conn, err := tls.Dial("tcp", addr.String(), tlsConfig)
        return conn, err
    }
    session, err := mgo.DialWithInfo(dialInfo)
    if err != nil {
        // Handle error
    }

    // Use the session to interact with MongoDB Atlas
}

Penyelesaian Alternatif:

Pilihan lain ialah menggunakan kaedah ParseURL untuk menghuraikan MongoDB Rentetan URI Atlas. Walau bagaimanapun, kaedah ini tidak menyokong SSL pada masa ini (mgo.V2 PR:304). Penyelesaian adalah untuk mengalih keluar baris "ssl=true" daripada URI sebelum menghuraikan.

// URI without ssl=true
mongoURI := "mongodb://username:[email protected],prefix2.mongodb.net,prefix3.mongodb.net/dbName?replicaSet=replName&authSource=admin"

dialInfo, err := mgo.ParseURL(mongoURI)

// Below part is similar to the previous example.
// ... (remainder of code)

Dengan mengikuti langkah ini, anda boleh berjaya menyambung ke MongoDB Atlas menggunakan pemacu mgo dan menyelesaikan "pelayan tidak boleh dicapai " isu.

Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat \'Tiada Pelayan Boleh Dicapai\' Semasa Menyambung ke MongoDB Atlas dengan Pemacu mgo Go?. 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