我维护旧软件(Firebird 2.5和C#.NET)。最近,我们遇到了许多“与并发更新有关的僵局更新冲突”错误。我检查了交易设置。它没有设置等待时间的选项:

问题描述 投票:0回答:1

A“僵局更新与并发更新发生冲突”发生时,当多个事务要修改同一行时。只有一个更新者可以真正改变行并提交。只要第一个事务尚未提交,第二笔交易中的更新将等待(无限期或直到配置的超时为止)。第一笔交易提交后,第二笔交易中的更新将以此错误结束(如果第一个交易已退回,则第二笔交易将继续)。

如果这是最近开始发生的,您需要确定发生了什么变化。还有另一个工具还开始写入数据库,用户数量增加了吗,您是否升级了某些内容(例如Firebird或Firebird ado.net提供商版本等),您是否进行了更改,导致长期运行的交易执行更新?
您的应用程序代码将需要更改以自动重试此错误。另外,请确保您的交易不太“太长”时间(交易的时间越长,发生这些类型的错误的机会就越多)。此外,您可以尝试将事务行为从

FbTransactionBehavior.RecVersion

更改为
firebird deadlock firebird2.5
1个回答
8
投票
(并通过具有较新事务ID的交易来承诺)。

还请参见

http://www.firebirdfaq.org/faq151/

,firebird中的transactions:酸,隔离水平,僵局,并解决更新冲突冲突和

transaction语句。

trone a
commit;
如果是通过isql.exe进行的。
    

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.