我不确定这是不是一个错误,但对我来说肯定是一个错误。
当我使用涉及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');
}
答案 0 :(得分:1)
这几乎肯定是一个错误。根据我的经验,doctrine:generate-migrations-diff
非常不可靠,并且会针对更复杂的更改生成错误的迁移。
您可以报告问题here。