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?
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 .
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.
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With