Как решить проблему 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
Ссылки:
- Не реализована команда alter (doableware/djongo#433)
- удалены миграции черного списка (jazzband/djangorestframework-simplejwt#282)
О похожей проблеме сообщается на django migrate выдает ошибку после настройки mongodb (doableware/djongo#567).