2015-12-09 2 views
2

Я вижу ошибку ниже, когда я запускаю следующий запрос внутри миграции Doctrine:SQLSTATE [HY000]: Общая ошибка: 1025 Ошибка на ошибке переименования при удалении внешнего ключа в Учении миграции

ALTER TABLE crmpicco_course_version DROP FOREIGN KEY FK_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". 
+0

Что показывает «SHOW ENGINE INNODB STATUS» после запуска запроса? – tftd

+0

@tftd Я обновил вопрос с выходом. 'CONSTRAINT' удаляется перед' FOREIGN KEY', однако это мое понимание того, как работают миграции Doctrine. Это подтверждается stof здесь https://github.com/doctrine/migrations/issues/83#issuecomment-7261301 – crmpicco

+0

Интересно ... У меня такое чувство, что это может быть ошибка. Посмотрите на этот [sqlfiddle] (http://sqlfiddle.com/#!2/8cc3a/1), который доказывает, что код sql работает нормально. Вы пытались обновить зависимость доктрины или mysql? При поиске 'errorno: 152' я заметил пару тем в официальной форме mysql. Есть несколько здесь и на SO. – tftd

ответ

1

После бесконечного падения и воссоздания моих локальной базы данных я обнаружил, что это было вызвано доктриной создания такого же ALTER заявления не раз , а также в неправильный порядок.

Мне пришлось вручную менять утверждения, чтобы убедиться, что я перенес данные из старой таблицы в свою новую таблицу, прежде чем создавать новое ограничение внешнего ключа в новой таблице. Без этого изменения я получил ошибку выше и другие.

+1

Приветствия! Имел ту же проблему, рад узнать, что это не я сошел с ума –

Смежные вопросы