Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi Firebird错误消息";系统错误导致执行不成功,从而妨碍后续语句的成功执行;_Delphi_Firebird_Uib - Fatal编程技术网

Delphi Firebird错误消息";系统错误导致执行不成功,从而妨碍后续语句的成功执行;

Delphi Firebird错误消息";系统错误导致执行不成功,从而妨碍后续语句的成功执行;,delphi,firebird,uib,Delphi,Firebird,Uib,我的应用程序在访问Firebird数据库时有时会生成此类错误: 系统错误导致执行不成功,排除了 成功执行后续语句GDS代码:335544726- SQL代码:-902-错误代码:406' 有什么问题吗?有什么方法可以调试这个吗 我正在Windows7上运行Firebird 2.5.1。至少有使用Delphi的Python和UIB组件的kinterbasdb。看起来原因是使用了来自多个线程的相同连接/事务。在我们切换到UIB(从IBX)之后,我们也遇到了许多类似的错误。 这是由TUIBTransa

我的应用程序在访问Firebird数据库时有时会生成此类错误:

系统错误导致执行不成功,排除了 成功执行后续语句GDS代码:335544726- SQL代码:-902-错误代码:406'

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


我正在Windows7上运行Firebird 2.5.1。至少有使用Delphi的Python和UIB组件的kinterbasdb。

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

在我们切换到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//每次启动事务前的秒数
。(如果由于超时而失败,您可以使用更高的值重复执行,同时明智的做法是通知用户冻结的UI。)

重要提示:

当前(2016)UIB代码根本无法处理
LockTimeOut
。首先,它必须被修复。请参阅代码

335544726->isc\u net\u read\u err->“从连接读取数据时出错”
,这表明存在某种网络错误。firebird日志文件包含哪些消息?您是否使用gfix实用程序检查了数据库文件的正常运行情况?上次备份/还原数据库是什么时候?为什么不将Firebird升级到最新的2.5.3快照?@Lightbull Local applications,任何东西都不能通过网络。@Harriv我不是说这是网络错误,我只是在错误消息中提供了错误代码的说明。您的应用程序是多线程的吗?如果是,线程是否共享相同的连接?