Why am I getting a ‘ProgrammingError: relation “auth_user” does not exist’ exception when running tests?
Recently I’ve migrated a Django project from version 1.9.1 to 3.2.7.
Now I’m trying to write some new tests, and I’m getting this error:
# 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
I understand this is because currently I don’t have any ‘migrations’ directory, as I cloned the git repo and the DB already existed when the Django project was running in version 1.9.1.
I’ve read:
All of them recommend running migrations, but:
# python manage.py makemigrations No changes detected # python manage.py makemigrations auth No changes detected in app 'auth'
Again, I think this is because the DB schema already existed before upgrading to 3.2.
I cannot seem to solve the issue running the migrations approach.
Is there another way to solve this issue, or force to generate the migrations even if the DB already exist and is synced (and possible fake them)?
Answer
If the error is because of the migrations you can skip the migration errors while running tests by using the following django library
django-test-without-migrations ( pip install django-test-without-migrations)
Install the library and add it in INSTALLED_APPS (settings.py)
Then run, python manage.py test --nomigrations
refer:https://pypi.org/project/django-test-without-migrations/