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
Lepaskan: 2024-11-27 19:18:13
asal
436 orang telah melayarinya

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)
Salin selepas log masuk

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

Addrs: []string{"prefix2.mongodb.net:27017"}
Salin selepas log masuk

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.
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan