2010-12-27 17 views
2

Ich bin mir nicht sicher, ob dies ein Fehler ist, aber es scheint mir wie einer zu sein.Doctrine/Symfony generierte Migrationen außerhalb der Reihenfolge

Wenn ich Migrationen mithilfe von generate-migrations-diff erzeuge, die Tabellen mit Fremdschlüsseln in Symfony enthalten, werden die resultierenden Migrationen möglicherweise nicht ordnungsgemäß ausgeführt. Nehmen wir zum Beispiel an, dass ich einen Fremdschlüssel in Tabelle A zu Tabelle B habe und Tabelle B und das referenzierende Feld in Tabelle A lösche, fällt die erste Migration Tabelle B und die Spalte in Tabelle A, während die zweite Migration dann erfolgt löscht die Fremdschlüsseleinschränkung in Tabelle A. Die erste Migration funktioniert nicht, da das Feld in Tabelle A mit der Fremdschlüsseleinschränkung nicht gelöscht werden kann und auch Tabelle B aufgrund der Fremdschlüsseleinschränkung nicht gelöscht werden kann.

Was passieren sollte ist, dass die Fremdschlüsseleinschränkung zuerst fallen gelassen werden sollte, und dann die Tabelle und die Felder sollten gelöscht werden.

Ich verwende mysql 5.1.37 als mein DBMS.

Hier einige der generierten Code:

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'); 
    } 

Antwort

1

Es ist mit ziemlicher Sicherheit ein Fehler. Meiner Erfahrung nach ist doctrine:generate-migrations-diff sehr unzuverlässig und erzeugt bei komplexeren Änderungen falsche Migrationen.

Sie können das Problem melden here.

Verwandte Themen