(IBXから)UIBに切り替えた後、このようなエラーも多数発生しました。
TUIBTransactionのトランザクションの種類(オプション)が原因です。「ReadCommited」:と
「Snapshot」の両方:
「tpNowait」
が原因で同じ原因になります。特に通常のHDDからSSDに切り替えた後。(各行の間に挿入すると、行は少し役に立ちましたが、完全には解決しませんでした。) [tpNowait,tpReadCommitted,tpRecVersion]
[tpConcurrency,tpNowait]
sleep(2);
TR.Start; sleep(2); ... TR.Commit;
リスクが高すぎてAPPが永久にハングする可能性があるため、単に「tpWait」を使用したくありませんでした。
したがって、解決策は次のとおり
です。1.)トランザクションオプションを「デフォルト」に変更します。[tpConcurrency,tpWait,tpWrite]
2.)トランザクションを開始する前に、毎回実行時に設定します。 (タイムアウトが原因で失敗した場合は、より高い値で実行を繰り返すことができますが、フリーズしたUIについてユーザーに通知することをお勧めします。)TR.LockTimeOut := 5; //seconds
重要:
現在(2016年)のUIBコードはまったく処理できませんLockTimeOut
。まず、修正する必要があります。ここのコードを参照してください...