Почему я получаю 'django.db.utils.ProgrammingError: relation "auth_user" does not exist' при запуске тестов?
Недавно я перевел проект Django с версии 1.9.1 на 3.2.7.
Теперь я пытаюсь написать несколько новых тестов, и получаю эту ошибку:
# python manage.py test
Creating test database for alias 'default'...
Got an error creating the test database: database "test_django" already exists
Type 'yes' if you would like to try deleting the test database 'test_django', or 'no' to cancel: yes
Destroying old test database for alias 'default'...
Traceback (most recent call last):
File "/opt/venv/lib/python3.6/site-packages/django/db/backends/utils.py", line 84, in _execute
return self.cursor.execute(sql, params)
psycopg2.errors.UndefinedTable: relation "auth_user" does not exist
Насколько я понимаю, это происходит потому, что в настоящее время у меня нет никакого каталога 'migrations', так как я клонировал git-репо и БД уже существовала, когда проект Django работал в версии 1.9.1.
Я читал:
Все они рекомендуют выполнять миграции, но:
# python manage.py makemigrations
No changes detected
# python manage.py makemigrations auth
No changes detected in app 'auth'
Опять же, я думаю, это происходит потому, что схема БД уже существовала до обновления до версии 3.2.
Я не могу решить проблему, используя подход миграции.
Есть ли другой способ решить эту проблему, или заставить генерировать миграции, даже если БД уже существует и синхронизирована (и возможно подделать их)?
Если ошибка вызвана миграциями, вы можете пропустить ошибки миграций при выполнении тестов, используя следующую библиотеку django ошибки при выполнении тестов, используя следующую библиотеку django
django-test-without-migrations ( pip install django-test-without-migrations)
Установите библиотеку и добавьте ее в INSTALLED_APPS (settings.py)
Then run, python manage.py test --nomigrations
refer:https://pypi.org/project/django-test-without-migrations/