11

新しい行をデータベースに追加しようとすると、「INSERT INTO 招待されたユーザー VALUES('id', user_name')」

次のエラーが表示されます。

General error: "java.lang.IllegalStateException: Chunk 2089 no longer exists [1.4.181/9]"

同じ行を新しいデータベースに追加しようとすると、エラーが消えたため、おそらくデータベースに問題があります。

2014 年 11 月 20 日更新

朗報です!H2 db の開発者に連絡したところ、次のリリースでそのバグが修正されることがわかりました。 https://groups.google.com/forum/#!topic/h2-database/i_GHXExjotc

2014 年 12 月 6 日更新

簡単な回避策は、データベース URL に「;mv_store=false」を追加して MVStore を無効にすることです。

ただし、古いデータベースが必要な場合、このトリックは機能しません。.mv.db の代わりに .h2.db 拡張子を持つ新しいデータベースを作成します

これを克服するには、古いデータベース「.mv.db」の SQL スクリプトを作成し (Recover ツールを使用)、「runscript ...」を使用してこのスクリプトを実行する必要があります。

4

1 に答える 1

5

バージョン 1.4.182 では、チャンクが参照されなくなったことを検出するメカニズムに問題がある可能性があります。現在、これはreference countingガベージ コレクションです。ライブ ページとライブ スペースをカウントします。これがゼロになると、45 秒後にチャンクを上書きできます。

簡単な回避策は、軽減策として使用するデータベース接続を変更するpage store代わりに、ストレージ メカニズムを使用することです。mv_storemv_store=false

MV_STORE オプションは、バージョン1.4.177 Betaから自動的に有効になります。

デフォルトでは、MV_STORE オプションが有効になっているため、新しい MVStore ストレージを使用しています。MVCC 設定はデフォルトで MV_STORE 設定と同じ値に設定されているため、デフォルトで有効になっています。テスト用に、";MV_STORE=FALSE" および/または ";MVCC=FALSE" をデータベース URL に追加することで、両方の設定を無効にすることができます。

于 2014-11-21T23:03:57.150 に答える