40001: serialization_failure
PostgreSQLЧто это значит?
На уровне изоляции SERIALIZABLE или REPEATABLE READ транзакцию не удалось сериализовать, поскольку она конфликтовала с параллельными изменениями, и она была отменена. Это ожидаемое поведение, защищающее согласованность данных.
Почему возникает?
Транзакции, параллельно обращающиеся к одним и тем же данным, невозможно упорядочить сериализуемым образом, конфликты записи при высокой параллельности или опасные зависимости, обнаруженные SSI (Serializable Snapshot Isolation).
Как исправить
Это не ошибка, а ожидаемый сигнал: повторите транзакцию как есть. Добавьте в приложение логику автоматического повтора. Чтобы сократить конфликты, укорачивайте транзакции и используйте более низкий уровень изоляции (READ COMMITTED), если более высокий действительно не нужен. Проектируйте так, чтобы снизить конкуренцию за горячие строки.