火鸟错误消息"Unsuccessful execution caused by a system error that precludes successful execution of subseq



我的应用程序在访问firebird数据库时会生成这种错误:

由系统错误引起的失败执行 成功执行后续语句GDS代码:335544726- SQL代码:-902-错误代码:406'

有什么问题?有什么方法可以调试?

我在Windows 7上运行Firebird 2.5.1。

看起来这样的原因是从多个线程使用相同的连接/事务。

我们切换到UIB(来自IBX)后,我们也有许多错误。
它是由TuibTransaction的交易(选项)引起的。两者:
"读取任务":[tpNowait,tpReadCommitted,tpRecVersion]
"快照":[tpConcurrency,tpNowait]
由于" tpnowait"而造成了同样的原因。尤其是从正常的HDD转换为SSD之后。(在每行之间插入sleep(2);,行TR.Start; sleep(2); ... TR.Commit;有所帮助,但没有完全解决。)

我们不想简单地使用" TPWAIT",因为它的风险太大了,该应用程序可能永远悬挂。

所以解决方案是:
1.)将事务选项更改为"默认值"。[tpConcurrency,tpWait,tpWrite]
2.)我们在运行时 TR.LockTimeOut := 5; //seconds 每次启动一次交易。(如果由于超时而失败,您可以以更高的价值重复执行,而明智的明智之举也可以通知用户有关冷冻的UI。)

重要:
当前(2016)UIB代码根本无法处理LockTimeOut。首先必须修复它。请参阅此处的代码...

相关内容

最新更新