Spring Boot + flywayでmigration以外が実行できない
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を直接叩くようにしたほうが早いのだろうか。。。