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:
- Drop tables involved in that migration of that app (consider a backup workaround if any)
- 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.