Grails Database Migration Plugin まとめ
前提Grails 2.4.4
2種類ある
1:データベースの内容を見て差分更新する。
2:GORM(domain クラス)の内容を見て差分更新する。
最初のステップ
DataSource.groovyの修正
全環境のdbCreateをコメントアウトする。
create-drop、updateになってると思うが、Database Migration Pluginの差分更新と競合してしまうために機能しないようにする必要がある。
Database Migration Pluginを使い始めたら、以後はDatabase Migration Plugin経由でテーブルの変更を行う必要が有る。dbCreateをコメントアウトしているので、domain変更したからって自動的にテーブルが変更されなくなる。
それでは導入を始める。
まずは、現状を記録する。
1の場合
grails dbm-generate-changelog changelog.groovy
2の場合
grails dbm-generate-gorm-changelog changelog.groovy
grails-app/migrations/changelog.groovyというファイルが出来ればOK。
次に、現時点までの変更を記録する。
テーブルを追加するので開発環境のMYSQLを起動させる。
grails dbm-changelog-sync
これにより、changelog.groovyに記載された内容までテーブルに適応されたという状態がlogに記録される。
開発環境のDBには変更管理用のテーブルが二つ(databasechangelogとdatabasechangeloglock)できる。
以上で初期準備は完了。
以後、domainを変更した際はDatabase Migration Plugin経由でデータベースの変更を行う。
変更の仕方。
まずは、あるdomainを変更。
コマンド実行(ファイル名は適切に考える、最後の--addは忘れずに)
grails dbm-gorm-diff 2015-5-31-table-added.groovy --add
※最後の--addを忘れるとファイルしかできないので、手動でchangelog.groovyにファイル名を追記する。
データベースに変更を適用。
grails dbm-update
本番デプロイ準備
Config.groovyに以下を追記して、自動で変更を適用するようにする。
grails.plugin.databasemigration. updateOnStart = true grails.plugin.databasemigration. updateOnStartFileNames = ['changelog.groovy']
あとは普通にデプロイすればOK