PHPFixing
  • Privacy Policy
  • TOS
  • Ask Question
  • Contact Us
  • Home
  • PHP
  • Programming
  • SQL Injection
  • Web3.0

Wednesday, April 13, 2022

[FIXED] How to reset migrations in Django 1.7

 April 13, 2022     django, django-migrations, django-south, migration     No comments   

Issue

(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

  1. run "make migrations" and "migrate" on my development machine.
  2. run "migrate" on my devlopemnt machine to actually make the database changes
  3. Copy changes over, including migration files.
  4. run "migrate" on the production machine. (without the "makemigrations" step)

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?

  1. Delete the contents of the migration table (on both machines)?
  2. Delete the contents of the migration folder? (Including the init.py file).
  3. Start the migrations as per the documentation for a new one.

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


Solution

I would just do the following on both the environments (as long as the code is the same)

  1. Delete your migrations folder
  2. DELETE FROM django_migrations WHERE app = <your app name> . You could alternatively just truncate this table.
  3. python manage.py makemigrations
  4. python manage.py migrate --fake

After this all your changes should get detected across environments.



Answered By - harshil
Answer Checked By - Robin (PHPFixing Admin)
  • Share This:  
  •  Facebook
  •  Twitter
  •  Stumble
  •  Digg
Newer Post Older Post Home

0 Comments:

Post a Comment

Note: Only a member of this blog may post a comment.

Total Pageviews

Featured Post

Why Learn PHP Programming

Why Learn PHP Programming A widely-used open source scripting language PHP is one of the most popular programming languages in the world. It...

Subscribe To

Posts
Atom
Posts
Comments
Atom
Comments

Copyright © PHPFixing