我是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}}。但是,我不知道如何解决这个问题。
如何解决上述迁移问题?