Ошибка Mongodb в Django с использованием Djongo: pymongo.errors.OperationFailure: неподдерживаемый тип в фильтре - PullRequest
2 голосов
/ 10 июня 2019

Я пытаюсь подключить проект Django к кластеру MongoDB и при запуске:

py manage.py runserver

или

py manange.py migrate

Он продолжает показывать ту же ошибку:

Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).
Exception in thread django-main-thread:
Traceback (most recent call last):
  File "C:\Users\marlo\AppData\Local\Programs\Python\Python37-32\lib\threading.py", line 917, in _bootstrap_inner
    self.run()
  File "C:\Users\marlo\AppData\Local\Programs\Python\Python37-32\lib\threading.py", line 865, in run
    self._target(*self._args, **self._kwargs)
  File "C:\Users\marlo\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\utils\autoreload.py", line 54, in wrapper
    fn(*args, **kwargs)
  File "C:\Users\marlo\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\management\commands\runserver.py", line 120, in inner_run
    self.check_migrations()
  File "C:\Users\marlo\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\management\base.py", line 453, in check_migrations
    executor = MigrationExecutor(connections[DEFAULT_DB_ALIAS])
  File "C:\Users\marlo\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\migrations\executor.py", line 18, in __init__
    self.loader = MigrationLoader(self.connection)
  File "C:\Users\marlo\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\migrations\loader.py", line 49, in __init__
    self.build_graph()
  File "C:\Users\marlo\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\migrations\loader.py", line 212, in build_graph
    self.applied_migrations = recorder.applied_migrations()
  File "C:\Users\marlo\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\migrations\recorder.py", line 73, in applied_migrations
    if self.has_table():
  File "C:\Users\marlo\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\migrations\recorder.py", line 56, in has_table
    return self.Migration._meta.db_table in self.connection.introspection.table_names(self.connection.cursor())
  File "C:\Users\marlo\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\backends\base\introspection.py", line 48, in table_names
    return get_names(cursor)
  File "C:\Users\marlo\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\backends\base\introspection.py", line 43, in get_names
    return sorted(ti.name for ti in self.get_table_list(cursor)
  File "C:\Users\marlo\AppData\Local\Programs\Python\Python37-32\lib\site-packages\djongo\introspection.py", line 46, in get_table_list
    for c in cursor.db_conn.collection_names(False)
  File "C:\Users\marlo\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pymongo\database.py", line 715, in collection_names
    nameOnly=True, **kws)]
  File "C:\Users\marlo\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pymongo\database.py", line 677, in list_collections
    **kwargs)
  File "C:\Users\marlo\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pymongo\database.py", line 631, in _list_collections
    session=tmp_session)["cursor"]
  File "C:\Users\marlo\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pymongo\database.py", line 514, in _command
    client=self.__client)
  File "C:\Users\marlo\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pymongo\pool.py", line 579, in command
    unacknowledged=unacknowledged)
  File "C:\Users\marlo\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pymongo\network.py", line 150, in command
    parse_write_concern_error=parse_write_concern_error)
  File "C:\Users\marlo\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pymongo\helpers.py", line 155, in _check_command_response
    raise OperationFailure(msg % errmsg, code, response)
pymongo.errors.OperationFailure: unsupported type in filter

Моя конфигурация setting.py:

DATABASES = {
'default': {
    'ENGINE': 'djongo',
    'NAME': 'database_django',
    'HOST': 'mongodb+srv://xxxxxx:aaaaaa@isssgeneral-sfm0v.mongodb.net/test?retryWrites=true&w=majority',
    'PORT': 27017,
    'USERNAME': 'xxxxxx',
    'PASSWORD': 'aaaaaa' 
}
}

Моя среда Python выглядит следующим образом:

pymongo            3.7.0
Django             2.2.2 
djongo             1.2.32
sqlparse           0.2.4
dnspython          1.16.0

Я уже пробовал с этим постом решение, которое предлагает понизить версию pymongo до версии 3.5.1, которая уже пробовала, но не сработала. Фактически, проект ранее работал в версии pymongo == 3.7 (той, которая у меня есть на данный момент).

Я настроил этот проект Django для подключения к локальному серверу, и он работает, очевидно, что-то в имени хоста не подходит. Нет проблем с настройкой кластера (я думаю), поскольку у меня есть ноутбук Jupyter, который подключается напрямую к тому же кластеру.

Действительно не знает, что случилось с моим проектом, который внезапно прекратил подключение к моему кластеру Mongodb. Может ли кто-нибудь помочь мне найти решение этой проблемы?

Спасибо, сообщество.

...