【发布时间】:2013-08-03 03:19:10
【问题描述】:
我正在尝试使用 app/console doctrine:schema:update --force 命令进行架构更新,但 Doctrine 在以下部分失败:
An exception occurred while executing 'DROP INDEX IDX_E98F2859A074D5D7 ON contract':
SQLSTATE[HY000]: General error: 1553 Cannot drop index 'IDX_E98F2859A074D5D7': needed in a foreign key constraint
根据another SO question,这很容易解决。该表有:
KEY `IDX_E98F2859A074D5D7` (`some_table_id`),
CONSTRAINT `FK_E98F2859A074D5D7` FOREIGN KEY (`some_table_id`) REFERENCES `some_table` (`id`)
所以这可以通过删除匹配约束来手动解决。但是有没有办法自动完成呢?
【问题讨论】:
-
你在哪个表上有一个 FK,你到底在做什么,会抛出这个错误?
-
@Sonali 希望能提供答案(doctrine:schema:update)。架构更新正在删除索引,但在它之前没有删除外键。
-
我认为您将不得不删除 FK 并重新添加它。对不起,如果我错了...
-
当然,正如我在问题中提到的 - 我可以做到这一点,而且是可行的。我正在寻找一些以某种方式自动化的替代方案(并且最好不涉及
--dump-sql输出上的grep/sed/awk)。除非答案是“教义无法做到这一点,请继续编写更新脚本”——这对我来说也很好。 -
这似乎是 MySQL 存在的错误。当我迁移到 MariaDB 时,问题就消失了。
标签: mysql doctrine schema-migration