Doctrine迁移无法删除外键

时间:2014-03-31 08:49:32

标签: mysql doctrine-orm migration

我是Doctrine Migrations的新手。我对我的实体进行了一些更改,并测试了是否可以在测试数据库(myapp_test)上成功创建模式,以及是否可以加载我的fixture。这似乎运作良好。然后,我继续创建一个" diff"基于我的开发数据库(myapp_dev),它生成以下迁移(为简洁起见,省略了样板):

public function up(Schema $schema)
{
    // this up() migration is auto-generated, please modify it to your needs
    $this->abortIf($this->connection->getDatabasePlatform()->getName() != "mysql", "Migration can only be executed safely on 'mysql'.");

    $this->addSql("DROP INDEX UNIQ_B3D683F5297EC529 ON my_table");
    $this->addSql("CREATE INDEX IDX_B3D683F5E6C3FCB5 ON my_table (item_id)");
    $this->addSql("CREATE INDEX my_table_idx ON my_table (item_id, user_id)");
}

指令似乎想要删除一个唯一的,然后创建一个索引,这几乎就是我对我的实体所做的更改。但是,当我运行迁移时,我收到以下错误:

Migration 20140331161825 failed during Execution. 
Error An exception occurred while executing 'DROP INDEX UNIQ_B3D683F5297EC529 
ON my_table':

SQLSTATE[HY000]: General error: 1553 Cannot drop index 'UNIQ_B3D683F5297EC529': 
 needed in a foreign key constraint

如果我理解错误是正确的,那么它表示在第一次迁移指令中foreign key我试图drop依赖于{{1}}。但是,我不知道如何解决这个问题。

如何解决上述迁移问题?

0 个答案:

没有答案