Ошибка сериализации
Ошибка, которую СУБД возвращает на уровне изоляции SERIALIZABLE, когда обнаруживает, что параллельные транзакции нельзя выстроить в допустимый последовательный порядок. Вместо того чтобы допустить аномалию, одна транзакция прерывается («could not serialize access»), и приложение должно её повторить.
Механика: Serializable Snapshot Isolation (SSI) в PostgreSQL позволяет транзакциям оптимистично работать на своих MVCC-снимках и отслеживает зависимости чтения/записи между ними; обнаружив шаблон, нарушающий сериализуемость (например, write skew), СУБД прерывает одну из транзакций с ошибкой сериализации. Так что при SERIALIZABLE это нормально и ожидаемо — не баг. Следствие: в приложении ОБЯЗАН быть цикл повтора, перезапускающий транзакцию при этой ошибке. Выигрыш: полная сериализуемость (без тонких аномалий) без тяжёлых блокировок; цена — повторы при высокой конкуренции. Похоже на оптимистичный контроль конкурентности.