つかびーの技術日記

情報系修士卒のWeb系技術日記です。現在のフォーカス分野はアドテクです。

H2DBのMySQLモードでは重複INDEX名に注意

   

DBの1種にH2DBというものがあります。

MySQLやPostgreSQLと同様にサーバモードで使うこともできますが、組み込み型・インメモリ型として使うこともできるため、色々な場面で使うことができます。

自分はWebアプリのUnitTestに使っています。インメモリ型で起動してテーブル作成してテストデータ投入して、テストコード実行で使う、というような流れです。

MySQL互換モードがあるけれど過信は禁物

H2DBにはMySQL互換モードというものがあって、JDBC接続文字列の末尾に;MODE=MYSQLと付けるとMySQLっぽい感じで動くようになります。

ですが、残念ながら完璧ではないようで、DB内で同一名称のINDEXを作成できないようです。

実際にやってみるとこうなります。

まずはMySQLの場合です。MySQLではテーブルさえ違えば同一名称INDEXは問題ありません。

FOOとBARで同一名称のINDEX_NAME_Aがありますが問題ありません。

H2DBはというと・・・

 

 

これだけのことで2時間近くはまってしまった・・・・

 - H2DB, MySQL