«Обновление тупиковой ситуации конфликтует с одновременным обновлением», когда несколько транзакций хотят изменить одну и ту же строку.Только один апдейтер может действительно изменить строку и зафиксировать.Пока первая транзакция не зафиксирована, обновление во второй транзакции будет ожидать (неопределенно или до установленного времени ожидания).Как только первая транзакция будет зафиксирована, обновление во второй транзакции завершится с этой ошибкой (если вместо этого первая транзакция откатилась, вторая продолжила бы).
Если это началось недавно, вам нужноопределить, что изменилось.Другой инструмент также начал запись в базу данных, увеличилось ли количество пользователей, обновили ли вы что-то (например, Firebird, или версию поставщика Firebird ado.net и т. Д.), Вы внесли изменение, которое привело к длительным транзакциям, выполняющим обновления??
Необходимо изменить код вашего приложения, чтобы автоматически повторить эту ошибку.Также убедитесь, что ваши транзакции не слишком «длинные» по времени (чем длиннее транзакции, тем больше вероятность возникновения ошибок такого типа).Кроме того, вы можете попытаться изменить поведение транзакции с FbTransactionBehavior.RecVersion
на FbTransactionBehavior.NoRecVersion
, но это может привести к ожиданию при чтении записей, которые в данный момент обновляются параллельными транзакциями, и может фактически увеличить возникновение конфликтов обновления, если запись была обновлена.(и совершено) транзакцией с более новым идентификатором транзакции.
См. также http://www.firebirdfaq.org/faq151/, Транзакции в Firebird: ACID, уровни изоляции, тупики и разрешение конфликтов обновления и Заявления о транзакциях .