liquibaseでお手軽DBバーション管理

書いた
http://github.com/gotoppella/liquibase_project
antをインストールさえすりゃ使えるらくちん

初期設定

$ cat <<EOF > dbconfig/設定名.property
> #liquibase.properties
> driver: com.mysql.jdbc.Driver
> url:jdbc:mysql://ホスト名(:ポート番号)/データベース名
> username: ユーザ名
> password: パスワード
> EOF
$ ant db:changePropertiesFile
db:changePropertiesFile:
    [input] input config type >設定名

antのtargetを実行する際、"input config type >"と出た場合、
dbconfigディレクトリにある"**.property"の"**"を指定する。

設定変更

$ ant db:changePropertiesFile
db:changePropertiesFile:
    [input] input config type >設定名

既に存在するDBをバージョン管理したい場合

$ ant db:generateChangeLog
db:setChangeLogName:
    [input] チェンジログの名前 >test
$ ls changelog
master.xml
20121102xxxxxx_test.xml
$ ant db:changeLogSync // changelogとデータベース上のバージョン情報をシンクロ

新しいchangelog作成

$ ant db:makeChangeLog
db:setChangeLogName:
    [input] チェンジログの名前 >test

changelogをデータベースに反映させる

$ ant db:update

データベースの変更点の差分をchangelogに変換

phpMyAdminとかで変更した内容をchangelogにできるのでxmlさわる手間も省けてよい

  1. 同じデータベースを二つ用意する
  2. 一方を変更する
  3. 変更してないデータベースの設定を使用する
$ ant db:diffChangeLog
db:setChangeLogName:
    [input] チェンジログの名前 >diff
db:diffChangeLog:
    [input] 比較元のURL >変更したデータベースのURLおよびポート
    [input] 比較元のデータベース名前 >変更したデータベース名
    [input] 比較元のユーザ >ユーザ名
    [input] 比較元のPassword >パスワード

Document作成

$ ant db:generateDocument

ブラウザでbuild/index.htmlを開く

その他

ロールバックとかのターゲットは未実装
./liquibaseコマンドで代用