私のツール要件は非常に簡単です:
- アプリケーションのデータ構造をどのようにモックしたとしても、ツールはアプリケーションの別のインストールの構造を変更して、私のアプリケーションと同じにできる必要があります。
 - システム要件: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のバージョンについて考えています。