18

So I'm trying to run the initial migrations on a django app and when I try to run the migrate command (python manage.py migrate or makemigrations) I get the following error:

psycopg2.ProgrammingError: relation "dotworks_server_internship" does not exist
LINE 1: ...s", "dotworks_server_internship"."questions" FROM "dotworks_...
                                                             ^

I'm on a Windows environment using Django 1.9.6 and my database is postgres. Plus, I'm using PGAdmin to manage my database.

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'dotworks',
        'USER': 'postgres',
        'PASSWORD': 'mypasswordgoeshere',
        'HOST': 'localhost',
        'PORT': '5432',
    }
}

11 Answers 11

28

I had this problem and I had to comment out everything in urls.py that referenced views.py, then run makemigrations.

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

2 Comments

When you run python manage.py makemigrations, it seems to check urls.py (and in my case, urls_tenanats.py) and will attempt to execute sql to read model data before the data exists. When I run makemigrations, it fails on the first model with relation XXX does not exist. I commented out the code in urls.py that referenced views.py and the makemigrations worked.
This is a very strange gotcha that does not seem to be documented ANYWHERE! saved me hours of pulling my hair out. SO to the rescue once again!
17

Make sure that you don't have any class variables in your code that are calling Django manager

For example:

class SomeViewSet(viewsets.ViewSet):
    se = SomeEntity.objects.first()  # fetching some entity on the class level

    def list(self, request):
    # the rest of the code

So, when you try to create/apply migrations, this variable will also try to initialise, and will try to access SomeEntity, but at that moment that entity doesn't even exist, and the error occurs.

1 Comment

This is the right answer
3

Try to migrate particular app using following process. Refer Django migrations

python manage.py makemigrations

Initial migration created then run migrate command with app name

python manage.py migrate appname1, appname2

Comments

3

If all other solutions mentioned fail, if you are still in development probably the easiest solution is dropping the database (in pgAdmin 4 2.0, right-click on database) and then run makemigrations and migrate.

1 Comment

What if you are dealing with production DB? Can simply delete it?
3

When you run a query before applying migrations this error appears.

If you got this error during python manage.py makemigrations or python manage.py migrate you must consider that makemigrations and migrate commands run after successful django bootstrap! So this error happens when you run a query during django bootstrap! So you must find the place you run this query during bootstrap progress.

For example, during bootstrap, django reads root {project}/urls.py and its nested imports. If you use views or viewsets in urls.py and they are run a query during initializing (in their __init__ method or __init__.pyfile or somewhere etc.), it happens!

In this situation and similars, you must comment out any entry in urls.py and similar files which cause running a query during bootstrap and prevent them from running by raising of exception during bootstrap! makemigrations and migrate need successful bootstrap to be run!

If your commented out code needs to makemigrations and migrate handcooks :D, it needs to be patient and be silent for a cycle or a while ;), and after a successful migrations it could be active and verbose ;D.

1 Comment

I have created a custom package in django only, now when I installed it in other django project it gives me the same error and during trackbacking the error, the line to comment out was showing me in the site-packages folder. What to do in this case ?
2

Django is running an optional check. Pass the --skip-checks flag in your call to manage.py.

Comments

1

Your app is trying to call some DB entries that does not exist. If you are trying to migrate it to a new database, one of your options is to export a dump of old database and import it to your new DB.

For example in PostgreSQL, import the database using below command then migration will work!

sudo -u postgres -i psql mydb < mydb-export.sql

Comments

0

If you're running in local, For each Django app (maybe you have only one), erase the content of the migrations folder. Then, run python manage.py makemigrations app1 app2 app3 (if you have 3 Django apps named app1, app2, app3). This will (re)create the migrations files required to migrate your database

Then, run python manage.py migrate. It will apply the migration files you just created.

1 Comment

Didn't work, the problem seems to be that the tables are not even being created by the first migration attempt
0

For me the error came from some initialization code I put into the app.ready() method. Commenting that part of code allowed me to run the command makemigrations without any issue.

I believe app.ready is called at some point by manage.py even for the makemigrations command, which caused my code to query my database before any migration.

I found the problematic code thanks to the traceback.

Comments

0

This error may be related to previous database error. So if you created a new database and you also face that type of error, you can simply run the command with the app name:

python manage.py makemigrations <"app name">
python manage.py migrate <"app name">

Comments

0

First remove all urls from urls.py.

Create simple function view for viewing nothing:

def simple(request):
    context = {}
    return render(request, 'base.html', context)

and add urls to urls.py

do migrate:

python manage.py migrate

after migrate, recover the deleted urls.py contents

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.