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:
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!