DDL から Derby へ

<< 戻る   トップ >>

DdlUtils / Ant を使ってデータベースを移行する話、後半の DDL から Derby への移行である。本来ならば XML 化されたスキーマを詳細に検討すべきところだが、とりあえず何もせずに Ant を実行させてみた。

思ったとおり変換エラーが出て失敗するのだが、その前にいくつかの表については変換に成功しているようだ。成功しているのは article と categroy で、object 表の途中から失敗している。object は画像データを blob として保管している怪しい表だから、ここで止まるというのはありうることである。試しに、object 表を除いて変換したところ、358のエラーは出力したものの、BUILD SUCCESSFUL にて終了した。object は 358レコードなので、エラーは「スキーマに存在しない表のデータがあるんだけど、どうよ」ということなんだろう。object さえ対策すればなんとかなりそうだ。

それで、問題の object 表が DDL のスキーマでどう記述されているかを見てみよう。

size が 65535 の1 LONGVARCHAR なんてのは他の表でも出てくるので、問題は data カラムの LONGVARBINARY(16777215) だろう。MySQL では mediumblob と定義されている。mediumblob は最長 16,777,215バイトのバイナリデータである。これを収納する Derby 側の方としては、BLOB を指定すればよかろう。LONGVARBINARY を BLOB に変更して試して見るとうまくいった。他に微妙な調整が必要なところがあるかもしれないが、とにかく MySQL から Derby への移行作業は簡単にできることがわかった。昨年の7〜9月にかけて一生懸命作っていた DBコンバータってなんだったんだろう。Java EE の学習にはなったんだけど。


作成: 2014-05-19 09:51:11.0更新: 2014-05-19 11:11:45.0
http://museo-anonimo.jp/nanban/?id=1271,http://museo-anonimo.jp/nanban/tr/1271