Movatterモバイル変換


[0]ホーム

URL:


BLOGTIMES

cles::blog

平常心是道
« :: »
2021/02/07

壊れた H2 DB のファイルを修復するには

  java 
このエントリーをはてなブックマークに追加

突然、Gitbuketが JDBC エラーを吐くようになってしまって参りました。

ログを調べて見るとH2 DB に関する見たことがないログを吐いています。
Row "####" not found と言っていますが、これはデータベースファイルが不整合を起こしているようです。

Caused by: org.h2.message.DbException: Row "2515" not found in primary index "PUBLIC.COLLABORATOR_DATA" [90143-199]at org.h2.message.DbException.get(DbException.java:205)at org.h2.mvstore.db.MVPrimaryIndex.getRow(MVPrimaryIndex.java:274)at org.h2.mvstore.db.MVTable.getRow(MVTable.java:338)・・・・・・

しかたがないので、データベースをリカバリしていきます。

H2 DB にはUsing the Recover Tool というプログラムが用意されていて、不整合を起こしているデータベースファイルからデータをサルベージすることができます。
サルベージされたデータは SQL としてダンプされているので、あとはこれを元にデータベースを復元してやれば OK。

具体的な手順は H2 DB をダウンロードし、カレントディレクトリにデータベースファイル( data.mv.db )がある状態で以下のコマンドを実行します。

java -cp h2*.jar org.h2.tools.Recoverjava -cp h2*.jar org.h2.tools.RunScript -url jdbc:h2:./new -user sa -password sa -script ./data.h2.sql -driver org.h2.Driver -showResults

うまくいけばカレントディレクトリに new.mv.db が生成されているはずなので、あとはこれを元の data.mv.db に上書きしてやれば完了です。

参考


    byhsur at 12:55[5年前][4年前][3年前][2年前][1年前][1年後][2年後][3年後] |
    こんな記事もあります 「MVTable.java Gitbuket カレントディレクトリ
    周回遅れだけど ripgrep (rg) を使い始めてみた
    GitHub にそっくりなセルフホストできる Git サービス Gitea
    Docker で HTTP/3 対応の nginx のリバースプロキシを立ててみた
    Docker で gitbucket + MySQL サーバを立ててみた
    ChromeDriver を使って Chrome を headless で動かす
    svn2git でリポジトリを git に移行
    /etc/init.d/hoge start と service hoge start は何が違う?
    Ruby 1.9.2 から $LOAD_PATH にカレントディレクトリが入っていない
    Twitter4J で つぶやきを送信するアプリを書いてみた
    「安全でないライブラリのロード」とは具体的にどういうことなのか
    トラックバックについて
    Trackback URL:
    お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
    このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/12279
    Trackbacks
    このエントリにトラックバックはありません
    Comments
    愛のあるツッコミをお気軽にどうぞ。[policy]
    古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
    コメントはありません
    Comments Form

    コメントは承認後の表示となります。
    OpenIDでログインすると、即時に公開されます。

    OpenID を使ってログインすることができます。

    Identity URL:Yahoo! JAPAN IDでログイン

    « :: »
    Copyright © 2004-2023 by CLES All Rights Reserved.
    サイト内検索
    検索ワードランキング
    へぇが多いエントリ
    閲覧数が多いエントリ
    1 .アーロンチェアのポスチャーフィットを修理(99702)
    2 .年次の人間ドックへ(99111)
    3 .福岡銀がデマの投稿者への刑事告訴を検討中(99107)
    4 .三菱鉛筆がラミーを買収(98711)
    5 .2023 年分の確定申告完了!(1つめ)(98681)
    最新のエントリ
    cles::blogについて
    誰が書いてる?
    最近行った場所
    サイトポリシー
    タグ一覧
    検索ワードランキング

    Referrers

      Powered by CLES
      Nucleus CMS v3.31SP3/w memcached
      21376593(W:7218 Y:1720 T:0692)
      cles::blogのはてなブックマーク数
      benchmark


      [8]ページ先頭

      ©2009-2025 Movatter.jp