GMT+0900Flywayというデータベースマイグレーションライブラリを使ってみました。Framework向けにflyway-playというライブラリがあります。今回はこれを使いま...せんでした。若干最新バージョンから遅れをとっているのと、マイグレーション用のSQLを格納するディレクトリが決まってたみたいなので、なんかそこがちょっとな~と思ったのがあります。結局、同じディレクトリ構成にしてしまったのですが...。build.sbtbuild.sbtのlibraryDependenciesに下記を記述。バージョンはサイトの方で確認してください。"5.0.7",コード書くマイグレーションのSQLを読んで実行するコードを書きます。ドキュメントを見るとファイルをパス指定で読み込む方法とJavaのクラスパスに従って読み込む方法があるのですが、クラスパスに従って読み込む方法だとどうもうまくいかなかった(ディレクトリ構成も合わせたんだけどな)ので、ファイルのパスを指定することにしました。これは私がJavaド素人というのが最大の要因ですし、日本語のいくつかの記事だと普通にクラスパスでやってるので私の問題です。いうわけで、ファイルパスを指定してSQLを読み込みます。flyway.migrate()}こんな感じにしてみました。今回はSQLは/conf/db/migrationに格納しました。System.getProperty("user.dir")でプロジェクトのカレントディレクトリが取得できるので、その後ろにディレクトリのパスを足してます。前述のとおりこれはflyway-playのデフォルトの設定と同じです。わかんなかったらAPI見ながらやったらいいです。結局同じところに配置するなら、おとなしくライブラリ使えばよかったのではないか...SQLを格納する前述のディレクトリ内にSQLを格納します。今回はV1__Initialize.sqlという名前にしました。はじめアンダースコアを1つしか書いておらずエラーがでたのですが、アンダースコアは2つ書かなければなりません。ドキュメントはよく読みましょう。その他詳しい命名にはドキュメント見てください。実行してみるこれで実行するとちゃんとテーブルができます。マイグレーションのログ自身も下記のようにDBで管理されるようになってます。コンソールには何も表示されませんでしたが、logbackを設定していると下記のようにマイグレーションのログがでてました。00:00.079s)この後に再度実行すると下記のようにマイグレーションの不要とのログがでてました。necessary.SQLを変更して実行してみるテーブルに変更が入ると当然別ファイルでALTER文を記述することになると思うのですが、せっかくなので作成したテーブルをDROPした上で既に実行済みのV1__Initialize.sqlの中身を変更して実行すると...。1ああ、やっぱり怒られるんですね。flywayの履歴テーブルから対象のレコードを削除して実行するとうまくいきました。まとめなんか、あんまりScalaに関係ない内容だったんですが、まあええでしょう。play-slick-evolutionだとSQLファイルの命名が数値でしたがこちらだとファイル名にわかりやすい名前を付けることができていいですね。いいのですが、あのペイントで書いたようなロゴがうまいことふわっとふわふわ感を表現していて、私は好きです。YoshinoriN)。