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のバージョンについて考えています。

Source: https://habr.com/ru/post/J90052/


All Articles