Django Programming error column does not exist even after running migrations

I got the same problem (column not exist) but when I try to run migrate not with makemigrations (it is the same issue I believe)

  • Cause: I removed the migration files and replaced them with single pretending intial migration file 0001 before running the migration for the last change

  • Solution:

    1. Drop tables involved in that migration of that app (consider a backup workaround if any)
    2. Delete the rows responsible of the migration of that app from the table django_migrations in which migrations are recorded, This is how Django knows which migrations have been applied and which still need to be applied.

And here is how solve this problem:

  • log in as postgres user (my user is called posgres):

    sudo -i -u postgres

  • Open an sql terminal and connect to your database:

    psql -d database_name

  • List your table and spot the tables related to that app:

    \dt

  • Drop them (consider drop order with relations):

    DROP TABLE tablename ;

  • List migration record, you will see migrations applied classified like so:

id | app | name | applied
–+——+——–+———+

SELECT * FROM django_migrations;
  • Delete rows of migrations of that app (you can delete by id or by app, with app don’t forget ‘quotes’):

    DELETE FROM django_migrations WHERE app='yourapp';

  • log out and run your migrations merely (maybe run makemigrations in your case):

    python manage.py migrate --settings=your.settings.module_if_any

Note: it is possible that in your case will not have to drop all the tables of that app and not all the migrations, just the ones of the models causing the problem.

I wish this can help.

Leave a Comment