SSブログ

H2 バージョン1.2.131がstableになったのでバージョンアップしたら・・・ [IT]

なんとなくChangeLog等から気配を感じてはいたのですが、H2って最近のバージョンでDBの内部構造を変更したんですね。


バージョン1.2.131がstableになっていたのでバージョンアップしたら、新しい形式のDBファイルでないと使えないようになっているらしく、以下に示す例外を吐かれました。

16:23:46,963 WARN SettingsFactory:117 - Could not obtain connection metadata org.h2.jdbc.JdbcSQLException: ファイル "Old database: /Users/marbee/h2/data/stock.data.db - please convert the database to a SQL script and re-create it." は、未サポートのバージョンか、不正なファイルヘッダを持つデータベースファイルです
Unsupported database file version or invalid file header in file "Old database: /Users/marbee/h2/data/stock.data.db - please convert the database to a SQL script and re-create it." [90048-131]



とりあえずDBファイルを新しい形式に変換する方法を調べましたので以下に示します。

(1)
バージョン1.2.127かそれ以前のjarファイルにCLASSPATHを通す。


(2)
「org.h2.tools.Script」コマンドを使ってバックアップを取る。

例:
データファイルが「/Users/marbee/h2/data/stock.data.db」の場合以下に示すコマンドを実行する。
java org.h2.tools.Script -url jdbc:h2:file:/Users/marbee/h2/data/stock -user sa -password sa -script test.zip -options compression zip

(3)
「/Users/marbee/h2/data」フォルダをリネームするなりして退避する。


(4)
バージョン1.2.128かそれ以後のjarファイルにCLASSPATHを通す。


(5)
「org.h2.tools.RunScript」コマンドを使ってリストアする。

例:
java org.h2.tools.RunScript -url jdbc:h2:file:/Users/marbee/h2/data/stock -user sa -password sa -script test.zip -options compression zip


以上でコンバートできました。
ただしできたファイルが「stock.h2.db」だけでした。


以前のバージョンでは「〜.index.db」とか別ファイルであったので「インデックスとかどうなったのかなぁ?」とか心配ですが、H2コンソールから見てみるとインデックスはあるようです。
ファイル名に「data」って付いていない所から推測するに、きっとファイルが統合されたのでしょう。

とりあえずバージョン1.2.131のjarで動作するようです。



でも、「インデックスは作り直した方が良いかも?」とか疑問・・・
今度時間がある時に試行錯誤してみます。



私同様stableのバージョンを追いかけている人のために、まずはコンバート方法のご紹介という事で・・・

タグ:H2 stable 1.2.131
nice!(3)  コメント(0)  トラックバック(1) 
共通テーマ:パソコン・インターネット

footprint 3

コメント 0

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 1

トラックバックの受付は締め切りました
Related Posts Plugin for WordPress, Blogger...

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。