Я пытаюсь подключиться к MongoDB из приложения Go, но получаю ошибку ReplicaSetNoPrimary.
Вот мой код подключения к MongoDB:
пример URI MongoDB:
mongodb+srv://user:[email protected]/?retryWrites=true&w=majority&appName=ntw
func SetupDB(uri string) *mongo.Client {
log.Printf("Connecting to MongoDB")
log.Printf("URI: %s", uri)
ctx := context.TODO()
client, err := mongo.Connect(ctx, options.Client().ApplyURI(uri))
if err != nil {
log.Fatalf("Failed to connect to MongoDB: %v", err)
}
defer func() {
if err := client.Disconnect(ctx); err != nil {
log.Fatalf("Failed to disconnect from MongoDB: %v", err)
}
}()
if err := client.Ping(ctx, readpref.Primary()); err != nil {
log.Fatalf("Failed to ping MongoDB: %v", err)
}
log.Printf("Connected to MongoDB")
return client
}
Вот ошибка, которую я получаю:
Failed to ping MongoDB: server selection error: server selection timeout, current topology:
{ Type: ReplicaSetNoPrimary,
Servers: [{ Addr: ac-l4ofxbw-shard-00-00.55n9jaw.mongodb.net:27017,
Type: Unknown,
Last error: tls: failed to verify certificate: x509: certificate has expired or is not yet valid: },
{ Addr: ac-l4ofxbw-shard-00-01.55n9jaw.mongodb.net:27017,
Type: Unknown,
Last error: tls: failed to verify certificate: x509: certificate has expired or is not yet valid: },
{ Addr: ac-l4ofxbw-shard-00-02.55n9jaw.mongodb.net:27017,
Type: Unknown,
Last error: tls: failed to verify certificate: x509: certificate has expired or is not yet valid: }, ] }
failed to verify certificate: x509: certificate has expired or is not yet valid
— эта ошибка делает невозможным использование любого из 3-х видимых серверов, поэтому основное исключение не выдается, вам следует это исправить. Поскольку это атлас, проверьте ссылки поддержки mongodb.com/community/forums/t/… и mongodb.com/community/forums/t/…Если вы решили проблему, опубликуйте ответ, чтобы помочь будущим разработчикам, у которых могут возникнуть подобные сообщения об ошибках.
Проблема решена путем настройки правильного часового пояса на локальном компьютере.
Как сейчас написано, ваш ответ неясен. Пожалуйста, отредактируйте , чтобы добавить дополнительную информацию, которая поможет другим понять, как это относится к заданному вопросу. Более подробную информацию о том, как писать хорошие ответы, вы можете найти в справочном центре.
Кроме того, я добавил все IP-адреса для сетевых подключений в MongoDB Atlas.