MySQLのデータベース構造のバージョン管理:PHPを使用したMySQLの移行

プロジェクトデータベースが3〜5つのテーブルを超えて成長し、絶えず変化し続けると、開発者間で変更を共有するという不便さが生まれます。 問題は世界と同じくらい古いものですが、2009年11月に要件を満たすツールを見つけることができませんでした。



私のツール要件は非常に簡単です:









同様のツール




既存のツールを見てみましょう。 私が何かをグーグルしなかったなら-コメントを書いて-私は感謝するでしょう、私は記事に追加します。





これらすべてのオプションを検討したので、これらすべての要件を満たす独自のツールを作成することにしました。 ツールを作成するときに自転車を構築するときの私の決定は、 code.google.com / p / mysql-php-migrationssvn.limb-project.com/misc/migrationの 2つのプロジェクトに最も影響を受けました。



私たちにできること:






方法がわからないもの:


  1. ALTERスクリプトを作成します-すべてはクラス内に保存されます。
  2. ロールダンプとALTERスクリプト。
  3. PDOを使用する-MySQLiが必要です。
  4. ビールのために実行します。




何がありますか?



ただ一つの設定ファイル


config.ini

host=localhost

user=root

password=

db=mmpi_test

savedir=db ;

verbose=On

versiontable=db_version ; -









小さなコードライブラリ。



1つの実行可能ファイル:./migration.php



いくつかのチーム:






すべてがシンプルです。 テストベースで実験して、作業を開始できます。



システム要件:







知っておくべきこと



migrateコマンドは、 strtotime関数によって認識されるパラメーターで機能します。 パラメータが設定されていない場合、現在の時間が取られます。 移行クラスの名前とその内部の変数には、作成のタイムスタンプが格納されます。 MySQLユーザーは、新しいデータベースを作成する権限を持っている必要があります。ツールは、新しい移行を生成するとき、および移行/ローリング移行時に、これを使用して、作業後、スクリプトが一時データベースを削除します。



仕事の仕組み



移行を作成する場合:一時データベースが作成され、schema.phpがそこに注がれ(初期化スキームのリクエストがあります)、次に移行が最新のものに順番に追加されます。 各データベースのアレイスナップショットが削除され、違いが特定され、新しい移行クラスが作成されます。 アップグレード/ダウングレード中にデータ操作が必要な場合は、クラスを編集します。

マイグレーションを適用する場合マイグレーションのリストが読み取られ、アップグレード/ダウングレードが必要なマイグレーションが決定されます;現在からターゲットへのすべてのマイグレーションは順次実行されます。



移行クラス :上下に2つの配列が含まれ、対応する方向にこの移行を適用するときに、要求が順番に実行されます。



入手先





hg clone bitbucket.org/idler/mmp



PS さて、ここでは、これがアルファ版であることを書く必要があります ! コードを蹴ってください、しかし死ぬことはありません。 Bagreportと機能のクエストは大歓迎です。 それは私のために働くが、それはそれが皆のために働くという意味ではない。



PPS SQLiteのバージョンについて考えています。



All Articles