Reputation: 1280
Django runserver
complains:
You have unapplied migrations;
your app may not work properly until they are applied.
Run 'python manage.py migrate' to apply them.
How can I find out which migrations are unapplied without running migrate?
Upvotes: 57
Views: 54897
Reputation: 522
You can see a list of just the unapplied migrations with the --plan
option of the migrate
command:
python manage.py migrate --plan
It was introduced in Django 2.2 and is documented here.
Upvotes: 18
Reputation: 11
Once you run the migration command (python manage.py migrate
) its always generates an auto_migration.py
file in that specific app.
Also the same file you will be able to see it in your database. If that file is missing in your DB then your project will complain about "un-applied migrations".
So just go to your db and manually create an entry for auto_migration.py
.
Upvotes: 1
Reputation: 1814
A minor modification on Kevin's answer using grep, to only show unapplied migrations:
Django 1.7:
python manage.py migrate --list | grep -v '\[X\]'
Django 1.8 and above:
python manage.py showmigrations --list | grep -v '\[X\]'
Edited after ngoue's comment. Nice catch. Thanks for pointing it out.
Upvotes: 24
Reputation: 1463
after using this command :
python manage.py migrate
you get the same error: You have un-applied migrations;
simple way to solve this error is to go to your project directory search for your database directory that is created after command
python manage.py migrate
in my case db created was db.sqlite3
just delete that file and go to your terminal
and use manage.py makemigrations
followed by manage.py migrate
.
this worked for me . All the best
Upvotes: 2
Reputation: 49082
If you're on 1.7, use python manage.py migrate --list
. (docs)
If you're on 1.8 or above, use python manage.py showmigrations --list
. (docs)
In either case, there will be an [X] to show which migrations have been applied.
Upvotes: 99