Вложенная трансакция Django в двух базах данных Ошибка ProgramError
Я хочу иметь вложенную транзакцию в разных базах данных. (Я знаю, что это не гарантирует транзакционную фиксацию в двух базах данных). Один слой вложенной транзакции кажется нормальным, однако если я снова вложил транзакцию внешнего слоя во внутренний слой, иногда я вижу ошибку django.db.utils.ProgrammingError: relation "xxx" does not exist (Не 100% времени, но ошибка возникает почти каждый 1 из 2 запусков).
Ниже приведен код для воспроизведения этого:
with transaction.atomic(using="db1"):
with transaction.atomic(using="db2"):
qs = ExampleModel.objects.all()
for obj in qs:
obj.type = "new_value"
ExampleModel.objects.bulk_update(qs, ["type"])
with transaction.atomic(using="db1"):
ExampleModel.objects.using("db1").bulk_update(qs, ["type"])
Что могло вызвать это? Есть ли способ обойти это?