Django Programming error column does not exist even after running migrations

前端 未结 9 1023
南旧
南旧 2020-12-08 20:54

I run python manage.py makemigrations and I get: No changes detected Then, python manage.py migrate and I get: No migrations to apply.

9条回答
  •  攒了一身酷
    2020-12-08 21:05

    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.

提交回复
热议问题