Golang mgo を使用した MongoDB Atlas への接続: レプリカ セットへの永続的な「到達可能なサーバーがありません」
このエラー メッセージは、通常、接続しようとすると表示されますGolang の mgo ドライバーを使用して MongoDB Atlas レプリカ セットにコピーします。この問題を解決するには、次の手順を検討してください。
以下に示す mgo コード スニペットを使用します。
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)
単一のレプリカ セット メンバーをシードとして指定することも同様に有効であることに注意してください。オプション:
Addrs: []string{"prefix2.mongodb.net:27017"}
さらに詳しい情報については、以下を参照してください。リソース:
更新:
または、 mgo.ParseURL() メソッドを使用して、MongoDB Atlas URI 文字列を解釈できます。ただし、現在 SSL はサポートされていません。
回避策として、解析する前に ssl=true パラメータを削除できます。
// 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.
以上がMongoDB Atlas への Golang mgo 接続が「到達可能なサーバーがありません」エラーで失敗し続けるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。