InterBase2020でデータベースファイルを読み込みと「Internal gds software consistency check (next transaction older than oldest active transaction 」というエラーが発生することがある
対象となる製品
- InterBase 2020
問題
InterBase2020でデータベースファイルを読み込みと、以下の内容のエラーが発生することがあります。
Internal gds software consistency check (next transaction older than oldest active transaction (xxx), file: pag.c line: xxx)
InterBase 2020のReadmeには、ODS 13 以降のデータベースも接続可能と記載されていますが、古いODSバージョンのデータベースファイルをInterBase 2020で読み込むと発生することがあります。
(このエラーは、InterBase 2020の不具合ですが、必ず発生するわけではありません)
以下は、InterBaseとODSの各バージョンの対応表です。
InterBaseバージョン | ODSバージョン |
---|---|
InterBase 7.5 | ODS 11.2 |
InterBase 2007 | ODS 12 |
InterBase 2009 | ODS 13 |
InterBase XE | ODS 15.x |
InterBase XE3 | ODS 15.x |
InterBase XE7 | ODS 16.x |
InterBase 2017 | ODS 17.x |
InterBase 2020 | ODS 18.x |
解決
本症状を解決するには、ODSのバージョンを18.xに変更してください。
例えば、InterBase XE3のデータベースファイルをInterBase 2020で読み込めるようにするためには、以下の手順でデータベースファイルを復元してください。
- InterBase XE3のgbak -b コマンドでデータベースファイルをバックアップ
- InterBase 2020のgbak -r コマンドでデータベースファイルをリストア(復元)
リストア後のデータベースファイルのODSバージョンを確認するには、IBConsoleでデータベースファイルを開き、[プロパティ]-[全般]の"オンディスク構造体"でODSのバージョンを確認できます。