Dbup

UPコマンドだけのマイグレーションツール

プロジェクトページGitHub
in English

Dbup の特徴

Dbup はPHPで書かれたシンプルなマイグレーションツールです

  • 準備はdbup.pharをダウンロードするだけ
  • up コマンドしかありません。down コマンドは存在しません
  • マイグレーションの記述は親しみあるSQLそのままです。ORMやDSLを新しく覚える必要はありません
  • PHP標準のPDOクラスを利用しています
  • マイグレーションのステータス管理のためにデータベースに専用のテーブルを作る必要がありません
  • DBの設定ファイルはiniフォーマットです。いろんな言語に優しくPHPに依存していません

動作条件

  • PHP 5.4.0 以降
  • PDO エクステンション

更新履歴

githubのCHANGELOG.mdを参照してください

とりあえず動かしてみる

// 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を実行するだけ。そうすると.dbupsql ディレクトリが作成されます。 その中にサンプルの 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.