Rumah >pembangunan bahagian belakang >Golang >Mengapa Sambungan Golang mgo Saya ke MongoDB Atlas Terus Gagal dengan Ralat \'Tiada Pelayan Boleh Dicapai\'?

Mengapa Sambungan Golang mgo Saya ke MongoDB Atlas Terus Gagal dengan Ralat \'Tiada Pelayan Boleh Dicapai\'?

Susan Sarandon
Susan Sarandonasal
2024-11-27 19:18:13494semak imbas

Why Does My Golang mgo Connection to MongoDB Atlas Keep Failing with a

Menyambung ke MongoDB Atlas menggunakan Golang mgo: Berterusan "tiada pelayan boleh dicapai" ke set replika

Mesej ralat ini biasanya timbul apabila cuba menyambung kepada set replika Atlas MongoDB menggunakan pemacu mgo Golang. Untuk menyelesaikan isu ini, pertimbangkan langkah berikut:

Menggunakan coretan kod mgo yang disediakan di bawah:

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

// Configure TLS settings
tlsConfig := &tls.Config{}

// Initialize the DialInfo object
dialInfo := &mgo.DialInfo{
    Addrs: []string{"prefix1.mongodb.net:27017", 
                    "prefix2.mongodb.net:27017",
                    "prefix3.mongodb.net:27017"},
    Database: "authDatabaseName",
    Username: "user",
    Password: "pass",
}

// Override the default DialServer method
dialInfo.DialServer = func(addr *mgo.ServerAddr) (net.Conn, error) {
    conn, err := tls.Dial("tcp", addr.String(), tlsConfig)
    return conn, err
}

// Establish the connection using DialWithInfo
session, err := mgo.DialWithInfo(dialInfo)

Perlu diingat bahawa menetapkan ahli set replika tunggal sebagai benih adalah sama sah pilihan:

Addrs: []string{"prefix2.mongodb.net:27017"}

Untuk maklumat lanjut, rujuk perkara berikut sumber:

  • [tls.Dial()](https://golang.org/pkg/crypto/tls/#Dial)
  • [DialInfo](https:// godoc.org/gopkg.in/mgo.v 2#DialInfo)
  • [DialWithInfo](https://godoc.org/gopkg.in/mgo.v2#DialWithInfo)

Kemas kini:

Sebagai alternatif, kaedah mgo.ParseURL() boleh digunakan untuk mentafsir rentetan URI Atlas MongoDB. Walau bagaimanapun, pada masa ini ia tidak mempunyai sokongan untuk SSL.

Sebagai penyelesaian, anda boleh mengalih keluar parameter ssl=true sebelum menghuraikan:

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

dialInfo, err := mgo.ParseURL(mongoURI)

// Subsequent code remains similar to the previous example.

Atas ialah kandungan terperinci Mengapa Sambungan Golang mgo Saya ke MongoDB Atlas Terus Gagal dengan Ralat \'Tiada Pelayan Boleh Dicapai\'?. 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