Spring Boot + flywayでmigration以外が実行できない

2016年6月25日

Spring BootでDBマイグレーションするときは、flywayならサクッと使えるらしい。というわけで試してみたところ、migration自体は簡単にできたのですが、それ以外のflywayの操作をどうやったら良いのか分かりませんでした。結局、mvn pluginとしてflywayを導入し、Spring Bootの方は外しました。

Maven – First Steps – Flyway by Boxfuse • Database Migrations Made Easy.
https://flywaydb.org/getstarted/firststeps/maven

<dependency>
  <groupId>org.flywaydb</groupId>
  <artifactId>flyway-core</artifactId>
</dependency>
<build>
  <plugins>
  <plugin>
  <groupId>org.flywaydb</groupId>
  <artifactId>flyway-maven-plugin</artifactId>
  <version>4.0</version>
  <configuration>
  <url>jdbc:h2:file:./target/foobar</url>
  <user>username</user>
  </configuration>
  <dependencies>
  <dependency>
  <groupId>com.h2database</groupId>
  <artifactId>h2</artifactId>
  <version>1.4.191</version>
  </dependency>
  </dependencies>
  </plugin>
  </plugins>
</build>

具体的には、repairする方法がわからなくて途方に暮れてしまいました。一度間違ったSQLでmigrationしたら、repairしないと次のmigrationができないので、にっちもさっちもいかなくなってしまいます。グーグル先生に質問してみたけどよくわからず。

更に、開発内臓Tomcatの起動も少し遅くなった気がするんですよね。シームレスに連携してくれるということは、サーバ起動の度にmigrationが走るということなので、ちょっとビミョーな感じかも。

mvn pluginでは、以下のコマンドでrepair出来ます。

mvn flyway:repair

でも、mvnはコマンド叩いてから動き出すまでに多少時間がかかるので、flywayを直接叩くようにしたほうが早いのだろうか。。。