Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to redo a migration on django 1.8 after using --fake

Something went wrong on my migrations, I added a new datetimefield to a model then I used makemigrations and migrate.

python manage.py makemigrations python manage.py migrate 

But after this the migrate got an "table already exists error". I supposed I could fake the migrations and start over, so I did

python manage.py makemigrations --fake core  Operations to perform:   Apply all migrations: core Running migrations:   Rendering model states... DONE   Applying core.0001_initial... FAKED   Applying core.0002_auto_20150525_1331... FAKED   Applying core.0003_auto_20150525_1348... FAKED   Applying core.0004_processo_data_atualizacao... FAKED 

but the new migrate that I've just created was faked too (of course!).

How is the proper way to redo a migration (in this case the core.0004) after doing this?

like image 962
Fernando Freitas Alves Avatar asked Jun 03 '15 17:06

Fernando Freitas Alves


People also ask

How do I reset Django migration?

Django's migration can be reset by cleaning all the migration files except __init__.py files under each project app directory, followed by dropping the database and creating migration again using python manage.py makemigrations and python manage.py migrate .

How do I fix migration issues in Django?

you can either: temporarily remove your migration, execute python manage.py migrate, add again your migration and re-execute python manage.py migrate. Use this case if the migrations refer to different models and you want different migration files for each one of them.


1 Answers

You should first set your current state to 0003 with --fake (assuming 0003 is the last migration you really have applied):

python manage.py migrate --fake core 0003 

And then proceed as usual:

python manage.py migrate core 

Relevant documentation: https://docs.djangoproject.com/en/dev/ref/django-admin/#migrate

like image 151
Spc_555 Avatar answered Sep 21 '22 07:09

Spc_555