Dbup の特徴
Dbup はPHPで書かれたシンプルなマイグレーションツールです
- 準備はdbup.pharをダウンロードするだけ
up
コマンドしかありません。down
コマンドは存在しません- マイグレーションの記述は親しみあるSQLそのままです。ORMやDSLを新しく覚える必要はありません
- PHP標準のPDOクラスを利用しています
- マイグレーションのステータス管理のためにデータベースに専用のテーブルを作る必要がありません
- DBの設定ファイルは
ini
フォーマットです。いろんな言語に優しくPHPに依存していません
動作条件
- PHP 5.4.0 以降
- PDO エクステンション
更新履歴
とりあえず動かしてみる
// dbup.pharをダウンロードする
$ cd your_repo_root/repo_name
$ wget https://github.com/brtriver/dbup/raw/master/dbup.phar
// dbupの初期化する
$ php dbup.phar init
$ vi .dbup/properties.ini
// sqlファイルを用意して実行する
$ vi sql/V1__sample_select.sql
$ php dbup.phar status
$ php dbup.phar up --dry-run
$ php dbup.phar up
インストール
Dbupのインストールは簡単。dbup.pharをダウンロードしinit
を実行するだけ。そうすると.dbup
と sql
ディレクトリが作成されます。 その中にサンプルの properties.ini
と SQL ファイルがコピーされます。
$ php dbup.phar init
あなたのDB環境を .dbup/properties.ini
に書きましょう
[pdo]
dsn = "mysql:dbname=testdatabase;host=localhost"
user = "testuser"
password = "testpassword"
PHPのPDOそのままです。詳しくは PHP PDO document を見てください
また、環境変数をデータベースの設定ファイルで利用することができます。Dbup は iniファイル内に '%%' で囲まれた DBUP_
の接頭辞の環境変数を読み込むことができます。たとえば、次のように定義されていれば、user
パラメータは DBUP_USERNAME
の環境変数の内容に置き換えられます。
[pdo]
user = "%%DBUP_USERNAME%%"
マイグレーションファイルの命名規則
マイグレーションのファイルは以下のルールで作成してください:
V[バージョン番号]__[名前].sql
V はプレフィックスです。 バージョン番号と名前のセパレータは __ (2つの連続するアンダーバー)です。拡張子は .sqlです。
まずは、$ php dbup.phar create scriptname
を叩いてみてください。このコマンドは空のマイグレーションファイルを作成してくれます。
利用方法
コマンド一覧を見る
$ php dbup.phar
ステータス表示しマイグレーションの状況を確認する
$ php dbup.phar status
dbup migration status
================================================================================
Applied At | migration sql file
--------------------------------------------------------------------------------
2013-05-01 22:37:32 | V1__sample_select.sql
appending... | V2__sample.sql
appending... | V3__sample.sql
appending... | V20__sample.sql
appending... | V100__sample.sql
SQLファイルを書いて実行する
$ php dbup.phar up
これだけです。
どうやってステータスをチェックしてるの ?
up
コマンドを実行したとき、Dbupは.dbup/applied
ディレクトリに実行したSQLファイルをコピーします。
そして、up
コマンドは実行する前に、sql
と.dbup/applied
のディレクトリのファイルをチェックして両方に同名のファイルが存在しているときは実行済みとして無視します。
言い換えると、手動で.dbup/applied
にSQLファイルをコピーすると、そのSQLファイルは実行されなくなります。
また、.dbup/applied
からファイルを削除すると、そのSQLファイルはup
時に再度利用されるようになります。
git環境での利用時の注意
gitでプロジェクトを管理していたり、ステータスを開発者内で共有しているときは .dbup/applied/*
を .gitignore
に設定する必要があるでしょう。
注意点
Dbup はまだ安定板をリリースしていない状態です。もし実環境で利用する場合はあなたの開発環境やプレ環境で十分に確認してから実環境に反映するようにしてください。
開発者
Links
License
Dbup is licensed under the MIT license.