Django migration OperationalError: индекс [имя] уже существует

Надеюсь, кто-нибудь сможет мне помочь.
У меня есть три окружения как часть моего жизненного цикла разработки django, dev, uat и live. Django 3.2.6 с python 3.9.6.

Я пытаюсь добавить пару полей в две мои модели, но получаю ошибку при попытке миграции базы данных live, миграция баз данных dev и uat прошла нормально.

Вот код миграции, сгенерированный makemigrations

    # Generated by Django 3.2.6 on 2022-01-26 21:33
    
    from django.db import migrations, models
    
    class Migration(migrations.Migration):
    
        dependencies = [
            ('tasks', '0015_activity_next'),
        ]
    
        operations = [
            migrations.AddField(
                model_name='activity',
                name='delegated',
                field=models.BooleanField(default=False),
            ),
            migrations.AddField(
                model_name='activity',
                name='notified',
                field=models.BooleanField(default=False),
            ),
            migrations.AddField(
                model_name='adviser',
                name='digest',
                field=models.BooleanField(default=True, verbose_name='Send digest of assigned activities once per day?'),
            ),
            migrations.AddField(
                model_name='adviser',
                name='email',
                field=models.EmailField(default='i.pigney@tpio.co.uk', max_length=254),
            ),
        ]

Ничего сложного, просто добавляю два поля в модель деятельности и еще два поля в модель советника. Я не ожидал никаких проблем, но... вот трассировка ошибки:

Сообщение об ошибке понятно, но я не понимаю, почему существование индекса в базе данных должно быть проблемой. Этот же индекс уже существует в базах данных dev и uat, и это не вызвало проблем. Я рассматриваю возможность удаления индекса и проверки, поможет ли это, но я не знаю, какой ущерб это нанесет моей базе данных, и я не знаю, как ее воссоздать.

UPDATE: Я скопировал базу данных и сбросил индекс с помощью утилиты командной строки sqlite и команды sql DROP INDEX tasks_activity_provider_id_1557b363. У меня возникла та же проблема с другим индексом. Я сбросил и его, после чего миграция сработала! Она заново создала эти индексы (в соответствии с выводом команды sqlite .indexes). Я бы очень хотел понять, что здесь происходит, если кто-нибудь может направить меня в нужном направлении.

Вернуться на верх