行く記憶の流れは絶えずして

戻ってこないのでメモするところ

Liquibase、H2databaseでdropAll()できない

 

表題ままです。1週間悩んでました。

 

流れとして、

  • テストコード書きたい

  • DBにテストデータ入れたい

  • DropwizardのテストからLiquibaseを知る

  • テストを独立させるため@Beforeでテーブル作成、@Afterで全て消したい

  • 消えない(エラー終了)

最初はH2databaseとLiquibaseの相性とかいろいろ考えてました。

foreign key,view,tableを消す処理を自前で作ることも辞さない勢いでした。

 

が、落ち着いてログを見るとスキーマ名とテーブル名がダブルクオートで囲われている。

 

まさかと思ってソースを見ると、わざとそういった処理をしていました。

そのためそこだけオーバーライドしてよけたらうまくいっちゃった。

自己満足のためにgistで公開してみました。

Solve my way of exception on liquibase.dropAll(),using H2database(MODE=MYSQL)

Liquibase-3.1.1、 h2database-1.4で確認しています。

 

プロジェクトのソースに横槍を入れるなどおごがましいと考えているので、

絶対に他にやり方があると思います。

 

1週間の戦いに勝ったので、今日はマッカランで1杯やって寝ます。