Не удается подключиться к базе данных Mongo Cloud в Golang на Ubuntu - PullRequest
0 голосов
/ 13 апреля 2019

У меня есть этот код Go для подключения к моей базе данных Mongo Cloud:

func connectToDataBase() {
    ctx, cancel := context.WithTimeout(context.Background(), 20*time.Second)
    defer cancel()
    client, err := mongo.Connect(ctx, options.Client().ApplyURI(dbURL))
    if err != nil {
        log.Fatal("Error connecting to Database: ", err.Error())
    }
    DB = client.Database("storyfactory")
}

Я уже запустил этот код на компьютере с Windows, и он работал.Теперь я попытался запустить его на Ubuntu, и я получаю следующую ошибку:

2019/04/13 00:20:37 Error connecting to Database: error parsing uri (mongodb+srv://User:Password@cluster0-gpxjk.gcp.mongodb.net/test?retryWrites=true): lookup cluster0-gpxjk.gcp.mongodb.net on 127.0.0.53:53: cannot unmarshal DNS message
exit status 1

Я не знаю, почему это работает на Windows, а теперь нет на Ubuntu.
Спасибо заваша помощь!

1 Ответ

1 голос
/ 17 апреля 2019

не может разархивировать DNS-сообщение

Это не совсем связано с драйвером MongoDB Go.

В версии Go Go 1.11.x # 10622 имеется исправление net: имена целевых доменов в записях SRV не должны сжиматься , которые ужесточают способ чтения записей SRV в соответствии с RFC-2782.

Если авторитетный DNS-сервер (несовместимый) отправляет записи SRV с использованием сжатия доменного имени, net.lookupSRV() выдаст ошибку с cannot unmarshal DNS message ( net / lookup_unix.go # L130 ).Например, встроенный Docker DNS может выполнять сжатие имени сервера.

Временные решения для Go v1.11:

  • Использование URI MongoDB без SRV
  • Обновите содержимое /etc/resolv.conf, заменив nameserverиспользовать совместимый и / или общедоступный DNS-сервер, например 1.1.1.1 или 8.8.8.8

См. также GODRIVER-829

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...