Liquibase、H2databaseでdropAll()できない
表題ままです。1週間悩んでました。
流れとして、
-
テストコード書きたい
-
DBにテストデータ入れたい
-
テストを独立させるため@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杯やって寝ます。