私のツール要件は非常に簡単です:
- アプリケーションのデータ構造をどのようにモックしたとしても、ツールはアプリケーションの別のインストールの構造を変更して、私のアプリケーションと同じにできる必要があります。
- システム要件:PHPとMySQL-これ以上。
- 無料です。
- 開放性。
同様のツール
既存のツールを見てみましょう。 私が何かをグーグルしなかったなら-コメントを書いて-私は感謝するでしょう、私は記事に追加します。
- Ruby on Rails-追加。 RoRへの依存。 UPD:コメントの詳細。
- Doctrine-私が理解しているように-最初にschema.ymlを変更し、次に移行を生成する必要があります
- MySQL Migration Toolkit-Javaのインストールが必要(理解されていない)
- MySQL Workbench-グラフィカルなシェルとマウスを数回クリックするだけで、alterスクリプトを生成できます。このスクリプトは自動的にロールバックできます。
- habrahabr.ru/blogs/php/63585-Phingに関する記事。
- code.google.com/p/mygrate-Python
- code.google.com/p/mysql-php-migrations-空の移行クラスを生成する方法を知っています。リクエストはあなたの手でそれらに適合します
- svn.limb-project.com/misc/migration-起動に失敗しました。データベース接続パラメーターは3つまたは4つのスクリプトすべてにハードコードされています。 今の状況はわかりません。 私はこの方向で作業が行われたことを知っています。 コルチャサ ! コメントしますか?
- 有料ツール
これらすべてのオプションを検討したので、これらすべての要件を満たす独自のツールを作成することにしました。 ツールを作成するときに
私たちにできること:
- CLIモードでのみ機能します。
- 初期化回路を作成します。
- データベースを初期化します。
- PHP移行クラスを作成します。このクラスでは、クエリを手動で記述する必要はありません。すべて揃っています!!!
- 特定の日付への移行をロールします。
- 特定の日付に移行をロールバックします(慎重に、データを永久に失う可能性があります)
- 現在の移行をマークして、利用可能な移行のリストを表示します。
- データベースのバージョン管理データをユーザー定義の名前でテーブルに保存します。
方法がわからないもの:
- ALTERスクリプトを作成します-すべてはクラス内に保存されます。
- ロールダンプとALTERスクリプト。
- PDOを使用する-MySQLiが必要です。
- ビールのために実行します。
何がありますか?
ただ一つの設定ファイル
config.ini
host=localhost
user=root
password=
db=mmpi_test
savedir=db ;
verbose=On
versiontable=db_version ; -
小さなコードライブラリ。
1つの実行可能ファイル:./migration.php
いくつかのチーム:
- ヘルプ :ヘルプを表示
- schema :初期化スキーマを作成します。
- init :初期化スキームをダウンロード(データベースをインストール)
- create :新しい移行を作成します
- list :利用可能な移行のリストを表示します。 現在のマークは3つ***
- migrate :指定された時刻にデータベースを移行するか、時刻が指定されていない場合は最新バージョンに移行します
すべてがシンプルです。 テストベースで実験して、作業を開始できます。
システム要件:
- PHP> = 5.3(MySQLiを使用)
- MySQL> = 5.0(4つは試しませんでした)
- MySQLユーザーには、データベースを作成する権限が必要です。
知っておくべきこと
migrateコマンドは、 strtotime関数によって認識されるパラメーターで機能します。 パラメータが設定されていない場合、現在の時間が取られます。 移行クラスの名前とその内部の変数には、作成のタイムスタンプが格納されます。 MySQLユーザーは、新しいデータベースを作成する権限を持っている必要があります。ツールは、新しい移行を生成するとき、および移行/ローリング移行時に、これを使用して、作業後、スクリプトが一時データベースを削除します。
仕事の仕組み
移行を作成する場合:一時データベースが作成され、schema.phpがそこに注がれ(初期化スキームのリクエストがあります)、次に移行が最新のものに順番に追加されます。 各データベースのアレイスナップショットが削除され、違いが特定され、新しい移行クラスが作成されます。 アップグレード/ダウングレード中にデータ操作が必要な場合は、クラスを編集します。
マイグレーションを適用する場合 : マイグレーションのリストが読み取られ、アップグレード/ダウングレードが必要なマイグレーションが決定されます;現在からターゲットへのすべてのマイグレーションは順次実行されます。
移行クラス :上下に2つの配列が含まれ、対応する方向にこの移行を適用するときに、要求が順番に実行されます。
入手先
hg clone bitbucket.org/idler/mmp
PS
PPS SQLiteのバージョンについて考えています。