読者です 読者をやめる 読者になる 読者になる

Database Migration Pluginで毎回実行するchangelogを定義する

runAlways属性をtrueに設定することで毎回実行するchangelogを定義できます。runOnChange属性がtrueの場合ではchangesetのチェックサムが変更になった時のみ実行しますが、runAlways属性をtrueにするとチェックサム変更有無に関係なく毎回実行してくれます。

changeSet(author: "yamkazu", id: "create-dummy-data", runAlways: true, runOnChange: true) {
    sql("DELETE FROM person")
    sql("""
        |INSERT INTO person ( id, version, name ) VALUES ( nextval('hibernate_sequence'), 0, 'tanaka' );
        |INSERT INTO person ( id, version, name ) VALUES ( nextval('hibernate_sequence'), 0, 'sato' );
        """.stripMargin())
}

リファレンスを読む限り

Executes the change set on every run, even if it has been run before

と記述されておりrunAlwaysだけ付与すれば動くように読めますが現時点(Database Migration Plugin 1.3.2、Liquibase 2.0.5)ではrunOnChangeをtrueにしないとチェックサムのエラーになります。

こんな投稿を発見したが、いまいち直感的じゃない気がします。