(I know there is a title the same as this, but the question is different).
I have managed to get my development machine migrations and production migrations out of sync.
I have a Django app which was using South. I had my own workflow that worked fine (it probably wasn't the correct way to do things, but I had no problems with it).
Basically I have a script that copies the production database dump to my development machine. It also copied the migration files. That way the two were in synch, and I could run South commands as normal.
Now I have upgraded to 1.7, and started using migrations. When I use my previous workflow (copy database dump, and migration files from production), it is not detecting changes on my development machine.
I have read through the migrations document, and I see that the correct way to use it is to
Anyway. It is all a mess now. I would like to "reset" my migrations and start from scratch, doing things properly from now on.
What do I need to do?
Have I missed anything? Is there a reason why copying everything from production(database and migration files) doesn't detect any changes on my development machine afterwards
I would just do the following on both the environments (as long as the code is the same)
<your app name>
. You could alternatively just truncate this table.python manage.py makemigrations
python manage.py migrate --fake
After this all your changes should get detected across environments.
Run
python manage.py migrate your_app zero
This will drop all tables from your_app
If you want, since you said you want to start over, you can delete your migrations folder, or maybe rename the folder, create a new migrations folder and run
python manage.py makemigrations your_app
python manage.py migrate your_app
Just like south, you can always go back and forth...
# Go to the first migration
python manage.py migrate your_app 0001
# Go to the third migration
python manage.py migrate your_app 0003
So imagine that your 4th migration is a mess... you can always migrate to the 3rd, remove the 4th migration file and do it again.
Note:
This one of the reasons your models should be in different apps. Say you have 2 models : User and Note. It's a good practice to create 2 apps: users and notes so the migrations are independent from each other.
Try not use a single application for all your models
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