スティーブジョブスに俺はなる!!

毎日全力を出し切り、自分史上最高を出し続けたい!

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

 

qiita.com