2

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)?

16
  • Is it not an option to reuse the test database? You can do this with python manage.py test --keepdb Commented Oct 12, 2021 at 4:14
  • Is django.contrib.admin in INSTALLED_APPS of the settings.py file that your test uses? Commented Oct 12, 2021 at 10:03
  • @BrianDestura it is an option, but I'd better like to be able to run the tests recreating the DB on each run. If finally I don't see a way, I'll keep the DB. Commented Oct 13, 2021 at 7:38
  • @aaron I assume it is using the project's settings.py file (I'm not overwriting anything), so yes, django.contrib.admin is included. Commented Oct 13, 2021 at 7:38
  • Unfortunately to recreate the db you would need the migrations. Just curious, when you cloned, why are the migrations not included? Commented Oct 13, 2021 at 8:44

1 Answer 1

2
+50

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/

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.