Question

relation "app_table" does not exist LINE 1: SELECT COUNT(*)

i’m running this django app with postgresql db on digital ocean droplet, i’ve added a django model (table), when running makemigrations and migrate everything seems good, but when i try to render the page related to that model i get this error :

relation “app_table” does not exist LINE 1: SELECT COUNT(*)

I’ve tried many solutions except the one suggested to remove the entire database, i know it works, but i can’t simply remove my entire data!

do you guys have better solutions please ? much appreciated


Submit an answer


This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

Sign In or Sign Up to Answer

These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.

KFSys
Site Moderator
Site Moderator badge
October 25, 2023

Heya,

The error relation "app_table" does not exist indicates that the PostgreSQL database doesn’t recognize the table associated with your Django model. There could be various reasons for this:

  1. Incomplete Migrations: Even if makemigrations and migrate appeared to work, there might have been a hiccup.
  2. Database Settings: There might be a mismatch between the database your Django app is connected to and the one you ran migrations against.
  3. Database Router: If you’re using database routers in Django to route certain apps to specific databases, there might be a misconfiguration.

Let’s go through potential solutions step by step:

1. Check Migration Files:

Ensure that the migration file created for the new model is correct. Look inside the migrations folder of your app and find the specific migration related to the creation of the new model.

2. Ensure You’re Using the Right Database:

Check your settings.py to see if you’re connecting to the expected database. This is a common issue, especially if you have multiple databases or environments.

3. Re-apply Migrations:

Sometimes, re-applying migrations can help:

python manage.py migrate app_name zero
python manage.py migrate app_name

This rolls back the migrations for the app (without deleting data for unrelated tables) and then re-applies them.

4. Database Router:

If you’re using multiple databases, ensure that you’ve set up the database routers correctly. The issue might be that your model is routed to a different database than you expect.

5. Manual SQL Check:

Connect to your PostgreSQL database directly:

psql -U your_username -d your_database_name

Then, check if the table exists:

\dt

This command lists all tables. Ensure your table is in the list.

6. Check PostgreSQL Logs:

You can check the PostgreSQL logs for any errors or issues. The logs might provide more detailed information about any issues related to table creation.

7. Backup First:

Before making any significant changes, especially if you’re considering rolling back migrations or altering the database schema, always back up your database. You can do this using the pg_dump command:

pg_dump your_database_name > backup.sql

This will create a backup file named backup.sql.

Conclusion:

The issue you’re facing is a common one with various potential causes. By carefully diagnosing the problem and checking each possibility step-by-step, you can typically resolve it without resorting to drastic measures like removing the entire database.

Bobby Iliev
Site Moderator
Site Moderator badge
February 25, 2023

Hi there,

If you were to run python manage.py showmigrations are your migrations listed as 'applied`?

What I could suggest is connecting to your Postgres database using psql or any other SQL client, and verifying that the database and the database tables actually exist. If you do that with psql you can follow the steps here:

How to show all tables in PostgreSQL?

If everything looks good, I could suggest trying to reset the migrations and running them again from scratch.

Let me know how it goes!

Try DigitalOcean for free

Click below to sign up and get $200 of credit to try our products over 60 days!

Sign up

card icon
Get our biweekly newsletter

Sign up for Infrastructure as a Newsletter.

Sign up
card icon
Hollie's Hub for Good

Working on improving health and education, reducing inequality, and spurring economic growth? We’d like to help.

Learn more
card icon
Become a contributor

You get paid; we donate to tech nonprofits.

Learn more
Welcome to the developer cloud

DigitalOcean makes it simple to launch in the cloud and scale up as you grow – whether you’re running one virtual machine or ten thousand.

Learn more ->
DigitalOcean Cloud Control Panel