MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Грешка при избора на сървър на Docker и mongo-go-driver

Това се дължи на неразрешено hostname от хоста на Docker. В Docker екземплярите mongo1 , mongo2 и mongo3 са достъпни с тези имена. Тези имена обаче не са достъпни от хоста на Docker. Това се вижда от този ред:

Addr: mongo2:27017, Type: Unknown, State: Connected, Average RTT: 0, Last error: dial tcp: lookup mongo2: no such host

Драйверът на MongoDB ще направи опит за server discovery от даден член(ове) на набор от реплики; той ще намери всички други възли в рамките на набора реплики (чрез rs.conf ). Проблемът тук е, че наборът реплики е зададен с име mongo<N> , драйверът (изпълняван в Docker хост) няма да може да разреши тези имена. Можете да потвърдите това, като опитате да изпратите ping mongo1 от хоста на Docker.

Можете или да опитате да стартирате приложението от друг екземпляр на Docker, споделящ същата мрежа на Docker като набора реплики. Или променете мрежата на Docker като такава, за да разрешите имена на хостове, които могат да бъдат разрешени.

АКТУАЛИЗАЦИЯ:

Относно вашия коментар защо използвате mongo shell или PyMongo върши работа.

Това се дължи на разликата в режима на връзка. Когато посочвате единичен възел, т.е. mongodb://node1:27017 в shell или PyMongo не се извършва откриване на сървър. Вместо това той ще се опита да се свърже с този единичен възел (не като част от набор от реплики). Уловката е, че трябва да се свържете с основния възел на репликата, зададена за запис (трябва да знаете кой). Ако искате да се свържете като набор от реплики, трябва да дефинирате името на набора от реплики.

За разлика от mongo-go-driver , по подразбиране ще извърши откриване на сървър и ще се опита да се свърже като набор от реплики. Ако искате да се свържете като единичен възел, тогава трябва да укажете connect=direct в URI на връзката. Вижте също Пример за директно свързване




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Дизайн на релационна база данни към дизайн на mongoDB/mongoose

  2. Уникалното валидиране на Mongoose не работи. Записват се дублирани записи

  3. Как да актуализирам полето за дата в mongo конзолата?

  4. Mongoid намери вграден документ

  5. MongoDB пример за Yesod / Persistent