Почему я получаю '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/

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