Нарушение миграции данных в производстве при использовании bulk_update

Мое приложение развернуто на платформе Digital Ocean's App Platform for Django. Базой данных является PostgreSQL.

Следующая миграция данных была выполнена правильно в моей локальной среде. В производственной среде она начинается, но не заканчивается, поэтому развертывание автоматически отменяется.

Этот перенос данных затрагивает более или менее 40.000 строк в базе данных.

from django.db import migrations

def link_answers_to_default_segment(apps, schema_editor):
    """Create a default segment for each company"""
    Company = apps.get_model('brand_score', 'Company')
    Segment = apps.get_model('brand_score', 'Segment')
    Answer = apps.get_model('brand_score', 'Answer')

    for company in Company.objects.all():
        default_segment = Segment.objects.create(company=company, name='default')

        answers = Answer.objects.filter(participant__company=company)
        for answer in answers:
            answer.segment = default_segment
        
        Answer.objects.bulk_update(answers, ['segment'])

class Migration(migrations.Migration):

    dependencies = [
        ('brand_score', '0025_auto_20211209_1412'),
    ]

    operations = [
        migrations.RunPython(link_answers_to_default_segment, reverse_code=migrations.RunPython.noop),
    ]

Я изменил код, чтобы сохранять в каждой итерации, таким образом убрав bulk_update. После этого все заработало!

for company in Company.objects.all():
        default_segment = Segment.objects.create(company=company, name='default')

        answers = Answer.objects.filter(participant__company=company)
        for answer in answers:
            answer.segment = default_segment
            answer.save()

Я до сих пор не знаю, почему сейчас это работает, а раньше нет. И если это проблема Django или Digital Ocean

Если кто-то знает, почему он так себя ведет, было бы здорово.

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