Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Fix Conflicting migrations detected in Django1.9

I updated django-dynamic-model repository to support Django 1.9. I got this error:

CommandError: 

Conflicting migrations detected; multiple leaf nodes in the migration
graph: (0001_initial, 0002_auto__add_field_dynamicschemafield_extra in
dynamicmodel).
To fix them run 'python manage.py makemigrations --merge'

After running python manage.py makemigrations --merge, I got another error:

 File "/local/lib/python2.7/sitepackages/django/core/management/__init__.py",  
line 353, in execute_from_command_line
utility.execute()

 File "/local/lib/python2.7/sitepackages/django/core/management/__init__.py", line 345, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)

 File 
"/local/lib/python2.7/site-packages/django/core/management/base.py", line 348, in run_from_argv
self.execute(*args, **cmd_options)

File 
"/local/lib/python2.7/site-packages/django/core/management/base.py", line 399, in execute
output = self.handle(*args, **options)

File 
"/local/lib/python2.7/site-packages/django/core/management/commands/makemigrations.py", line 97, in handle
return self.handle_merge(loader, conflicts)

File 
   "/local/lib/python2.7/site-packages/django/core/management/commands/makemigrations.py", line 216, in handle_merge
 raise ValueError("Could not find common ancestor of %s" % migration_names)


 ValueError: Could not find common ancestor of set([u'0001_initial', u'0002_auto__add_field_dynamicschemafield_extra']). 

Help me to find the solution.

like image 405
Seenu S Avatar asked Apr 15 '16 20:04

Seenu S


People also ask

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.

How do I ignore migrations in Django?

One option is using the MIGRATION_MODULES setting, which is intended to define a custom name for an app's migration module. If you set None instead, Django will ignore the migration module.

How do I manage migrations in Django?

To recap, the basic steps to use Django migrations look like this: Create or update a model. Run ./manage.py makemigrations <app_name> Run ./manage.py migrate to migrate everything or ./manage.py migrate <app_name> to migrate an individual app.


1 Answers

The migrations need to have "straight" dependency chain, i.e. migration 0003 needs to depend on migration 0002, and 0002 on 0001.

You need to define this in the 0003_third.py like this:

class Migration(migrations.Migration):
    dependencies = [
        ('modulename', '0002_second'),
    ]
like image 77
PHZ.fi-Pharazon Avatar answered Oct 22 '22 06:10

PHZ.fi-Pharazon