django-invitations icon indicating copy to clipboard operation
django-invitations copied to clipboard

Conflicting migrations detected after 2.0.0->2.1.0

Open elnygren opened this issue 3 months ago • 2 comments

After upgrading 2.0.0 -> 2.1.0

CommandError: Conflicting migrations detected
multiple leaf nodes in the migration graph: (0004_alter_invitation_id, 0004_auto_20230328_1430 in invitations).
./manage.py showmigrations

invitations
 [X] 0001_initial
 [X] 0002_auto_20151126_0426
 [X] 0003_auto_20151126_1523
 [X] 0004_alter_invitation_id
 [ ] 0004_auto_20230328_1430

Contents of 0004_alter_invitation_id

# Generated by Django 4.2.5 on 2023-11-06 23:00

from django.db import migrations, models


class Migration(migrations.Migration):
    dependencies = [
        ("invitations", "0003_auto_20151126_1523"),
    ]

    operations = [
        migrations.AlterField(
            model_name="invitation",
            name="id",
            field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID"),
        ),
    ]

Contents of 0004_auto_20230328_1430

# Generated by Django 3.2.15 on 2023-03-28 14:30

from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion


class Migration(migrations.Migration):

    dependencies = [
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
        ('invitations', '0003_auto_20151126_1523'),
    ]

    operations = [
        migrations.AlterField(
            model_name='invitation',
            name='id',
            field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
        ),
        migrations.AlterField(
            model_name='invitation',
            name='inviter',
            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='inviter'),
        ),
    ]

elnygren avatar Mar 19 '24 12:03 elnygren

So it seems the upgrade path for django-invitations is something like:

  1. manually rollback 0004 (manage.py migrate invitations 0003) and hope it doesn't destroy any data
  2. update to 2.1.0 (pip-sync or whatever)
  3. manage.py migrate

?

Edit:

Hmm weird, I did not have the other 0004_alter_invitation_id in prod at all but did have it in dev 🤔

elnygren avatar Mar 19 '24 12:03 elnygren

pip does not seem to remove the migrations when uninstalling or upgrading the django-invitations package. I therefore solved the above problem by manually deleting the migration, e.g. remove .venv/lib/python3.12/site-packages/invitations/

stefanfeuerhahn avatar Mar 20 '24 13:03 stefanfeuerhahn