db:migrate
SkinnyFramework で db:migration するとエラーになっちゃった。
DB Migration - Skinny Framework の Try now を PostgreSQL に変更してやってみたらエラーになる。Flyway で使ってるメタデータの schema_version ができてないと。
Flyway の task の中には Baseline をつくるコマンドがあるんだけど。Skinny の task には migrate と repair しかないので、baseline をつくるための指定する手段がなさそう。
h2 のデータベースでやると成功するだよね。こりゃ最初からつまずいた。
2015-05-31 17:47:31.947 DEBUG --- [ run-main-0] scalikejdbc.ConnectionPool$ : Registered connection pool : ConnectionPool(url:jdbc:postgresql://localhost:5432/sandbox?loginTimeout=3&socketTimeout=10, user:sandbox) using factory : commons-dbcp2 2015-05-31 17:47:31.985 INFO --- [ run-main-0] o.f.core.internal.util.VersionPrinter : Flyway 3.2.1 by Boxfuse 2015-05-31 17:47:32.338 INFO --- [ run-main-0] o.f.c.i.dbsupport.DbSupportFactory : Database: jdbc:postgresql://localhost:5432/sandbox?loginTimeout=3&socketTimeout=10 (PostgreSQL 9.3) 2015-05-31 17:47:32.443 INFO --- [ run-main-0] o.f.core.internal.command.DbValidate : Validated 1 migration (execution time 00:00.059s) [error] (run-main-0) org.flywaydb.core.api.FlywayException: Found non-empty schema "public" without metadata table! Use baseline() or set baselineOnMigrate to true to initialize the metadata table. org.flywaydb.core.api.FlywayException: Found non-empty schema "public" without metadata table! Use baseline() or set baselineOnMigrate to true to initialize the metadata table. at org.flywaydb.core.Flyway$1.execute(Flyway.java:1035) at org.flywaydb.core.Flyway$1.execute(Flyway.java:1006) at org.flywaydb.core.Flyway.execute(Flyway.java:1418) at org.flywaydb.core.Flyway.migrate(Flyway.java:1006) at skinny.dbmigration.DBMigration$class.migrate(DBMigration.scala:39) at skinny.dbmigration.DBMigration$.migrate(DBMigration.scala:11) at skinny.task.DefaultTaskLauncher$$anonfun$18.apply(DefaultTaskLauncher.scala:36) at skinny.task.DefaultTaskLauncher$$anonfun$18.apply(DefaultTaskLauncher.scala:34) at skinny.task.SkinnyTaskLauncher$$anonfun$main$2.apply(SkinnyTaskLauncher.scala:25) at skinny.task.SkinnyTaskLauncher$$anonfun$main$2.apply(SkinnyTaskLauncher.scala:25) at scala.Option.map(Option.scala:146) at skinny.task.SkinnyTaskLauncher$class.main(SkinnyTaskLauncher.scala:25) at TaskRunner$.main(TaskRunner.scala:1) at TaskRunner.main(TaskRunner.scala) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:483) [trace] Stack trace suppressed: run last task/compile:run for the full output. java.lang.RuntimeException: Nonzero exit code: 1 at scala.sys.package$.error(package.scala:27) [trace] Stack trace suppressed: run last task/compile:run for the full output. [error] (task/compile:run) Nonzero exit code: 1 [error] Total time: 19 s, completed 2015/05/31 17:47:32
2015.6.8 追記
Flyway がデータベースに何らかのオブジェクトがあると schema_version を生成しないみたい。schema_version なければ生成すればいいと思うんだけど、なにか意図があるんだろうな