2010-12-27 7 views
2

これはバグかどうかはわかりませんが、確かに私には似ています。Doctrine/Symfonyが順不同でマイグレーションを生成しました

私は、symfonyに外部キーを持つテーブルを含むgenerate-migrations-diffを使用して移行を生成すると、結果として起こる移行が順不同であるようです。

たとえば、テーブルAからテーブルBへの外部キーがあり、テーブルBとテーブルAの参照フィールドを削除すると仮定すると、最初の移行はテーブルBとテーブルAの列を削除しますが、テーブルAの外部キー制約を削除できません。また、外部キー制約のためテーブルBを削除することもできません。

外部キー制約を最初に削除してから、、次にテーブルとフィールドを削除する必要があります。

私は自分のDBMSとしてmysql 5.1.37を使用しています。ここで

は、生成されたコードの一部です:

class Version94 extends Doctrine_Migration_Base 
{ 
    public function up() 
    { 
     $this->dropTable('B'); 
     $this->removeColumn('A', 'b_id'); 
    } 
. 
. 
. 


class Version95 extends Doctrine_Migration_Base 
{ 
    public function up() 
    { 
     $this->dropForeignKey('A', 'a_b_id_b_id'); 
    } 

答えて

1

それはほぼ確実にバグです。私の経験では、doctrine:generate-migrations-diffは非常に信頼性が低く、より複雑な変更のために不正確な移行を生成します。

問題はhereで報告できます。

関連する問題