Php SQLSTATE[HY000]:一般错误:在迁移过程中删除外键时发生1025重命名错误

Php SQLSTATE[HY000]:一般错误:在迁移过程中删除外键时发生1025重命名错误,php,mysql,symfony,doctrine-orm,doctrine-migrations,Php,Mysql,Symfony,Doctrine Orm,Doctrine Migrations,在条令迁移中运行以下查询时,我看到以下错误: ALTER TABLE crmpicco\u course\u version DROP外键FK\u C060B146DE13F470 Migration 20151209153121 failed during Execution. Error An exception occurred while executing 'ALTER TABLE crmpicco_course_version DROP FOREIGN KEY FK_C060B1

在条令迁移中运行以下查询时,我看到以下错误:

ALTER TABLE crmpicco\u course\u version DROP外键FK\u C060B146DE13F470

Migration 20151209153121 failed during Execution. 
Error An exception occurred while executing 
'ALTER TABLE crmpicco_course_version DROP FOREIGN KEY FK_C060B146DE13F470':

SQLSTATE[HY000]: General error: 
1025 Error on rename of './crmpicco_dev/crmpicco_course_version' 
to './crmpicco_dev/#sql2-77c-b0a' (errno: 152)
这是我试图更改的表:

CREATE TABLE `crmpicco_course_version` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `course_id` int(11) NOT NULL,
  `updated_by_id` int(11) DEFAULT NULL,
  `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `start_date` datetime DEFAULT NULL,
  `end_date` datetime DEFAULT NULL,
  `created_at` datetime NOT NULL,
  `updated_at` datetime NOT NULL,
  PRIMARY KEY (`id`),
  KEY `IDX_C060B146896DBBDE` (`updated_by_id`),
  KEY `IDX_C060B146DE13F470` (`course_id`),
  CONSTRAINT `FK_C060B146896DBBDE` FOREIGN KEY (`updated_by_id`) REFERENCES `crmpicco_user` (`id`),
  CONSTRAINT `FK_C060B146DE13F470` FOREIGN KEY (`course_id`) REFERENCES `crmpicco_course` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
是什么阻止我成功删除此外键

当我运行
SHOW ENGINE INNODB STATUS
时,我得到以下信息:

------------------------
LATEST FOREIGN KEY ERROR
------------------------
151209 16:25:42 Error IN dropping of a FOREIGN KEY CONSTRAINT of TABLE "crmpicco_dev"."crmpicco_course_version",
IN SQL command
ALTER TABLE crmpicco_course_version DROP FOREIGN KEY FK_C060B146DE13F470
Cannot find a CONSTRAINT WITH the given id "FK_C060B146DE13F470".

在无休止地删除和重新创建本地数据库之后,我发现这是由多次以错误顺序创建相同的
ALTER
语句造成的


我必须手动更改语句,以确保在新表上创建新外键约束之前将数据从旧表迁移到新表。如果没有此更改,我将得到上述错误和其他错误。

运行查询后,
显示引擎INNODB状态
显示什么?@tftd我已使用输出更新了问题。在使用
外键之前,先删除
约束
,但这是我对原则迁移工作原理的理解。斯托夫在这里证实了这一点。。。我觉得这可能是个错误。看看这个,它证明了sql代码工作正常。您是否尝试过更新条令依赖项或mysql?在搜索
errorno:152
时,我注意到mysql官方表单上有几个主题。这里也有一些。@tftd是的,我已经对这个进行了广泛的研究。MySQL站点()上的建议是
为了避免在尝试删除外键时出现此错误,请使用约束名称而不是外键的列名。
(我正在这样做)。干杯!有同样的问题,很高兴知道这不是我发疯为了防止自动增量id中的大跳转,我使用
alter
在循环“on replicate key update”语句后重置自动增量值。我甚至没有任何外键在表上,或引用表!