MongoDB ServerSelectionTimeoutError: Никакие элементы множества копии, доступные для набора копии, не называют “abc”

Я - опытный программист, но Python, Ubuntu и новичок Linux. Я приношу извинения, также, если этот вопрос был бы лучше на другом форуме.

Я работаю над проектом в использовании Python PyCharm с кодом, выполняющимся в среде Ubuntu в Бродяге. Это должно получить доступ к базе данных MongoDb.

Когда база данных локальна, я не испытываю затруднений. Я также могу соединиться с одной удаленной базой данных. Однако база данных, с которой я больше всего хочу соединиться, является частью набора копии, и это, кажется, проблема.

(Я должен сказать, что база данных с набором копии работает очень хорошо в его фактической роли. Я, кажется, тот с проблемой.)

Мы настраиваем некоторых ssh туннели, с помощью этих предложений:

Соединение с Набором Копии монго через SSH

Мы настраиваем hosts и ifconfig соответственно.

Мой супервизор может теперь соединиться с минимальной трудностью. Я, однако, продолжаю получать это сообщение:

pymongo.errors.ServerSelectionTimeoutError: No replica set members available for replica set name "abc"

Информация о соединении включает все 3 сервера набора копии как часть host строка, плюс указываемое имя набора копии и ReadPreference.PRIMARY.

Дорожка стека похожа на это:

File "/usr/local/src/dashboard/dashboard/dashboard/app/tasks/exports/__init__.py", line 95, in get_sections
    sections = CourseSection.objects(**params)
File "/apps/dashboard-env/lib/python3.4/site-packages/mongoengine/queryset/manager.py", line 37, in __get__
    queryset = queryset_class(owner, owner._get_collection())
File "/apps/dashboard-env/lib/python3.4/site-packages/mongoengine/document.py", line 198, in _get_collection
    cls.ensure_indexes()
File "/apps/dashboard-env/lib/python3.4/site-packages/mongoengine/document.py", line 878, in ensure_indexes
  collection.create_index(fields, background=background, **opts)
File "/apps/dashboard-env/lib/python3.4/site-packages/pymongo/collection.py", line 1753, in create_index
    self.__create_index(keys, kwargs, session, **cmd_options)
File "/apps/dashboard-env/lib/python3.4/site-packages/pymongo/collection.py", line 1641, in __create_index
    with self._socket_for_writes() as sock_info:
File "/apps/dashboard-env/lib/python3.4/site-packages/pymongo/collection.py", line 193, in _socket_for_writes
    return self.__database.client._socket_for_writes()
File "/apps/dashboard-env/lib/python3.4/site-packages/pymongo/mongo_client.py", line 965, in _socket_for_writes
    server = self._get_topology().select_server(writable_server_selector)
File "/apps/dashboard-env/lib/python3.4/site-packages/pymongo/topology.py", line 224, in select_server
    address))
File "/apps/dashboard-env/lib/python3.4/site-packages/pymongo/topology.py", line 183, in select_servers
    selector, server_timeout, address)
File "/apps/dashboard-env/lib/python3.4/site-packages/pymongo/topology.py", line 199, in _select_servers_loop
    self._error_message(selector))
pymongo.errors.ServerSelectionTimeoutError: No replica set members available for replica set name "abc"

Определенное сообщение No replica set members available for replica set name "abc" кажется, является относительно редким, поскольку я не нашел хитов на Google для проблем с определенным именованным набором копии.

Любые предложения очень ценились бы.

3
задан 21 March 2018 в 17:05

1 ответ

Я решил свою собственную проблему.

Оказывается, что, для изменения, против какой базы данных я выполняю код, я должен сделать следующее:

  1. Уничтожьте все ssh сессии на Бродяге, для закрытия любых существующих туннелей.
  2. Остановите локальное mongod сервис: service mongod stop
  3. При открытии нового туннеля: выполните желаемое ssh команда на Бродяге для создания желаемого туннеля. При соединении локально, ничего не сделайте.
  4. Перезапуск mongod: service mongod start

И теперь мой код соединится без ошибок.

Может случиться так, что существует лучший способ достигнуть этого, но это позволяет мне делать то, что я хотел сделать.

0
ответ дан 1 December 2019 в 20:32

Другие вопросы по тегам:

Похожие вопросы: