Doctrine / Symfony不按顺序生成迁移

时间:2010-12-27 20:20:29

标签: php mysql symfony1 doctrine symfony-1.4

我不确定这是不是一个错误,但对我来说肯定是一个错误。

当我使用涉及Symfony中具有外键的表的generate-migrations-diff生成迁移时,导致的迁移似乎无序。

例如,假设我在表A到表B中有一个外键,并且我删除了表B中的表B和引用字段,则第一次迁移会丢弃表B和表A中的列,而第二次迁移则会丢失表A中的外键约束。第一次迁移不起作用,表A中的字段不能删除外键约束,也不能因外键约束而删除表B.

应该首先删除外键约束,然后然后删除表和字段。

我正在使用mysql 5.1.37作为我的DBMS。

以下是一些生成的代码:

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 个答案:

答案 0 :(得分:1)

这几乎肯定是一个错误。根据我的经验,doctrine:generate-migrations-diff非常不可靠,并且会针对更复杂的更改生成错误的迁移。

您可以报告问题here