2016年

6月

28日

【iDempiere Lab】サーバ起動時のDBビルドバージョンエラーについて

 iDempiereのサーバー起動時に、次のような「Build Version Error」の メッセージが表示されますので、表示されている理由がわからないと、心配になると思います。

20:06:52.056 DB.isBuildOK: Build DB=${env.ADEMPIERE_VERSION} 20080428-1232 [14]

20:06:52.056 DB.isBuildOK: Build Cl=3.1.0.v20160625-1432 [14]

20:06:52.087-----------> DB.isBuildOK: Build Version Error 

 

The program assumes build version 3.1.0.qualifier, but database has build version ${env.ADEMPIERE_VERSION} 20080428-1232. 

This is likely to cause hard to fix errors. 

Please contact administrator. [18]

 結論から言いますと、このメッセージ自体はあまり意味がなく、ほとんどのケースで問題は無いと言えます。

 興味のある方は、DB.javaのisBuildOK()メソッドを読んで頂ければ、理解して頂けると思いますが、このDB.javaのisBuildOK()メソッド内では、文字列情報を比較("Build DB"の値と"Build Cl"の値を比較)して異なっていたらこのメッセージが出力されるようにしているだけで、実際にデータベースのスキーマ情報を精査しているわけではありません。

 そのため、比較している文字列情報を合わせてしまえば、このメッセージは表示されなくなります。データベースのスキーマ情報が例え古くても、比較している文字列情報さえ合わせてしまえば、このメッセージは表示されませんので、本質的なエラーチェックにはなっていません。

 このチェックロジックを理解してしまうと、このメッセージは意味がないので無視する事になり、私(萩原 秀明)は気にもとめていないのですが、気持ちいいメッセージではありませんので、このメッセージが表示されないようにする方法を下記に記載しておきます。

"システム"ウィンドウの最終ビルド情報を更新する

 システムクライアントの"システム"ウィンドウの最終ビルド情報を適切に更新すると、このメッセージは表示されなくなります。

ビルドバージョンチェック

 まずは、ビルドバージョンをチェックしておきましょう!!画面の左上にあるロゴをクリックします。

 そうするとポップアップウィンドウが表示され、現在のビルドバージョン番号が表示されます。この番号をメモ(コピー)しておきましょう。

"システム"ウィンドウの最終ビルド情報を更新する

 先に、チェックしたビルドバージョン番号を最終ビルド情報に設定します。"システム"クライアントにログインし、"システム"ウィンドウを開きます。

メニュー:

システム管理 -> 全般設定 -> システム設定 -> システム

システムウィンドウ
システムウィンドウ

 これで次回のサーバー起動時にはBuild Version Error」が表示されなくなるはずです。

DBのビルドバージョンが異なっていたらサーバーを起動させなくする

 DBのビルドバージョンが異なっていたらサーバーを起動させないようにする事も可能です。

システムウィンドウ
システムウィンドウ

 システムウィンドウのFail if Build DifferフラグをONにすると、ビルドバージョンが異なっていたらエラーとしてサーバーを起動させないようにする事ができます。

【補足説明】開発環境のビルドバージョン番号

 開発環境のビルドバージョン番号は、インストールパッケージのビルドバージョン番号とは異なります。開発環境は、ビルドする前の状態と考えれば当然ですが、この違いが、システムウィンドウの最終ビルド情報をメンテナンスする手間となり、起動時に「Build Version Error」が表示されていても、ほっておかれる根本的な理由な気がします…。

 最終ビルド情報のメンテナンスが面倒な場合は、システムコンフィグ設定に"APPLICATION_MAIN_VERSION"を設定する事で、ビルド情報を明示的に設定しておく事もできます。