Phingのインストール
この記事の著者は、Phingのベータ版とRCリリースを常に使用していることを認めています。互換性のために記事の資料を使用する場合は、同じことを行ってください。 phingをインストールする最も簡単な方法はPEARを使用することです。 次の3つのコマンドを使用して、任意のシステムでこれを実行できます。
> pearチャンネルの発見pear.phing.info > pear config-set preferred_stateベータ版 > Pearインストールphing / phing
アプリケーション構成例
この例では、次の構造を持つ単純なアプリケーションが考慮されます。
例/ |-db /←データベース管理用のsqlファイルはここに保存されます | `-デルタ/ |-deploy /←移行を提供するスクリプトはここに保存されます | `-スクリプト/ |-ライブラリ/←ここは開発中のアプリケーションです `-public /←DOCUMENT ROOTディレクティブはここを示します
コレクタースクリプト
このセクションでは、データベースの移行を初期化するコレクタースクリプトを開発する方法について説明します。 最初に、単純な構成(ini)ファイルを作成する必要がありますが、これに関するコメントは不要です。 ここに配置します:deploy / build.properties。
#プロパティファイルにはキー/値のペアが含まれます #キー=値 #このディレクトリにはローカルアプリケーションが含まれている必要があります build.dir = .. / #データベース移行の資格情報 db.host = localhost db.user =ユーザー db.pass =パスワード db.name =例 #プログラムへのパス progs.mysql = / usr / bin / mysql
作成する必要がある2番目のファイルは、deploy / build.xmlです。 彼から、Phingは私たちが彼から欲しいものを学びます。 著者はいくつかのコメントを付けて例を提供しましたが、さらに詳細な質問がある場合は、 Phingのドキュメントを参照してください。
<? xml version ="1.0" ? >
< project name ="PurpleMonkey" basedir ="." default ="build" >
<!-- Sets the DSTAMP, TSTAMP and TODAY properties -->
< tstamp />
<!-- Load our configuration -->
< property file ="./build.properties" />
<!-- create our migration task -->
< target name ="migrate" description ="Database Migrations" >
<!-- load the dbdeploy task -->
< taskdef
name ="dbdeploy"
classname ="phing.tasks.ext.dbdeploy.DbDeployTask" />
<!--
these two filenames will contain the generated SQL
to do the deploy and roll it back
-->
< property
name ="build.dbdeploy.deployfile"
value ="deploy/scripts/deploy-${DSTAMP}${TSTAMP}.sql" />
< property
name ="build.dbdeploy.undofile"
value ="deploy/scripts/undo-${DSTAMP}${TSTAMP}.sql" />
<!-- generate the deployment scripts -->
< dbdeploy
url ="mysql:host=${db.host};dbname=${db.name}"
userid ="${db.user}"
password ="${db.pass}"
dir ="${build.dir}/db/deltas"
outputfile ="${build.dir}/${build.dbdeploy.deployfile}"
undooutputfile ="${build.dir}/${build.dbdeploy.undofile}" />
<!--
Execute the SQL
Use mysql command line to avoid trouble with large files
or many statements and PDO
-->
< exec
command ="${progs.mysql} -h${db.host} -u${db.user} -p${db.pass} ${db.name} < ${build.dbdeploy.deployfile}"
dir ="${build.dir}"
checkreturn ="true" />
</ target >
</ project >
* This source code was highlighted with Source Code Highlighter .
原則として、これが実行される必要があるすべてであり、データベース自体を作成するために残ります。
dbdeployを使用する
原則として、まだベースを作成していないため、従来の方法ではなく、移行を使用して初期構造を作成します。 アプリケーションが何をするのかまだわかりませんが、多くの例ではブログの概念を使用しているので、同じものから始めてみませんか... 3つのフィールドを含む1つの「投稿」テーブルから始めましょう。
野原 | 種類 | コメント |
---|---|---|
タイトル | VARCHAR(255) | 投稿のタイトル |
time_created | 日時 | 投稿を作成した時間 |
内容 | MEDIUMTEXT | 投稿の内容 |
Dbdeployの作業は、番号付き差分ファイルの作成に基づいています。各ファイルには、変更を適用してロールバックするSQLが含まれています。ベースファイルは次のようになります。
--//
-- Run SQL to do the changes
--//@UNDO
-- RUN SQL to undo the changes
--//
* This source code was highlighted with Source Code Highlighter .
初期構造を作成するので、db / deltas / 1-create_initial_schema.sqlにダンプを入れます
--//
CREATE TABLE `post` (
`title` VARCHAR (255),
`time_created` DATETIME,
`content` MEDIUMTEXT
);
--//@UNDO
DROP TABLE `post`;
--//
* This source code was highlighted with Source Code Highlighter .
移行
私たちは最初の移行から一歩離れています。 データベースの現在のバージョンを追跡するために、dbdeployはサービス情報を保存するためのデータベース内のテーブルを必要とします。 これは、mysqlクライアントと直接対話する必要がある唯一の時間です。
> mysql -hlocalhost -uroot -ppasswordの例 > CREATE TABLE changelog( change_number BIGINT NOT NULL、 delta_set VARCHAR(10)NOT NULL、 start_dt TIMESTAMP NOT NULL、 complete_dt TIMESTAMP NULL、 apply_by VARCHAR(100)NOT NULL、 説明VARCHAR(500)NOT NULL ); > ALTER TABLE changelog ADD CONSTRAINT Pkchangelog PRIMARY KEY(change_number、delta_set);
これで、最初の移行を開始し、アプリケーションの初期構造を作成する準備ができました。
> cd deploy > phing migrate
データベースには投稿のあるテーブルがありますが、著者に関する情報を追加するのはどうですか? 別のテーブルと外部キーを作成する必要があります。これを行うには、dbdeploy用に別のファイルを作成し、db / deltas / 2-create_author_and_link_to_post.sqlと呼びます。
--//
CREATE TABLE `author` (
`author_id` INT (10) unsigned auto_increment,
`name` VARCHAR (255),
PRIMARY KEY (`author_id`)
);
ALTER TABLE `post` ADD `author_id` INT (10) unsigned NULL ;
--//@UNDO
ALTER TABLE `post` DROP `author_id`;
DROP TABLE `author`;
--//
* This source code was highlighted with Source Code Highlighter .
移行を再度実行します。
shell> cd deploy shell> phing migrate
おわりに
以上で、データベースのバージョン間の移行を簡単かつ簡単に提供する方法がわかりました。 よく見るためにコードを貼り付けたくない場合は、 アプリケーションアーカイブをダウンロードできます。
データベースのバージョン管理に関しては、特にアプリケーションコードを分岐してマージする場合、多くのポイントがあります。そのいくつかは、dbdeployドキュメントで詳細に説明されています。
このガイドは不完全です。追加するものがあると思われる場合は、下にコメントを残してください。
PS
Phingの概要については、Phingの紹介はGNUの記事ではありません 。