Как решить проблему djongo.exceptions.SQLDecodeError: при попытке выполнить команду migrate

Я создаю приложение DjangoRestful, которое использует SimpleJWT для аутентификации. Когда я пытаюсь добавить приложение Blacklist app и сделать миграции, т.е. py manage.py migrate, как предлагается в документации, я получаю следующую ошибку:

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

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'rest_framework',
    'rest_framework_simplejwt.token_blacklist',
    'drf_yasg',
    'main',
    'accounts',
]

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

anyio==3.5.0
asgiref==3.5.0
backports.zoneinfo==0.2.1
certifi==2021.10.8
charset-normalizer==2.0.12
coreapi==2.3.3
coreschema==0.0.4
Django==4.0.2
djangorestframework==3.13.1
djangorestframework-simplejwt==5.0.0
djongo==1.3.6
drf-yasg==1.20.0
idna==3.3
inflection==0.5.1
itypes==1.2.0
Jinja2==3.0.3
MarkupSafe==2.0.1
packaging==21.3
PyJWT==2.3.0
pymongo==3.12.1
pyparsing==3.0.7
pytz==2021.3
requests==2.27.1
ruamel.yaml==0.17.21
ruamel.yaml.clib==0.2.6
sniffio==1.2.0
sqlparse==0.2.4
tk==0.1.0
tzdata==2022.1
uritemplate==4.1.1
urllib3==1.26.8

Кто-нибудь знает, как это исправить?

У меня такая же ошибка и я использовал одно из решений, предложенных здесь: https://github.com/doableware/djongo/issues/505#issuecomment-841308612, после чего все выглядит нормально, но, конечно, возможно есть скрытые эффекты (Django migrate --fake и --fake-initial объяснены).

Так что в вашем случае вы могли бы попробовать что-то вроде этого:

python manage.py migrate --fake token_blacklist 0008

Сделать AlterField операции no-op.

Добавьте это в файл manage.py перед execute_from_command_line(sys.argv):

if sys.argv[1] == 'migrate':
    from django.conf import settings
    from django.db.migrations import AlterField
    if settings.DATABASES['default']['ENGINE'] == 'djongo':
        AlterField.database_forwards = lambda *_: None
        AlterField.database_backwards = lambda *_: None

Ссылки:

О похожей проблеме сообщается на django migrate выдает ошибку после настройки mongodb (doableware/djongo#567).

Вернуться на верх