Создание внешнего ключа в MySQL выдает ошибку:
Я пытаюсь создать внешний ключ для таблицы в MySQL и получаю странную ошибку, о которой, похоже, мало информации в любом из моих поисков.
Я создаю ключ с этим (выпущено из MySQL Workbench 5.2):
ALTER TABLE `db`.`appointment`
ADD CONSTRAINT `FK_appointment_CancellationID`
FOREIGN KEY (`CancellationID` ) REFERENCES `db`.`appointment_cancellation` (`ID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION
, ADD INDEX `FK_appointment_CancellationID` (`CancellationID` ASC) ;
в этот момент я получаю ошибку:
ОШИБКА 1452: Невозможно добавить или обновить дочернюю строку: ограничение внешнего ключа не выполнено (
alarmtekcore
., ОГРАНИЧЕНИЕFK_lead_appointment_CancellationID
ИНОСТРАННЫЙ КЛЮЧ (CancellationID
) РЕКОМЕНДАЦИИlead_appointment_cancellation
(`)
Я проверил здесь
но в таблице нет данных.
2 ответа
Вы не можете применить ограничение внешнего ключа к столбцу с уже существующими данными, которых еще нет в родительской таблице.
Если вы запустите следующее, чтобы заполнить таблицу assign_cancellation, вы сможете применить внешний ключ впоследствии:
INSERT INTO appointment_cancellation
SELECT DISTINCT a.CancellationID
FROM appointment
Два поля - appointment
,CancellationID
а также appointment_cancellation
,ID
- должны быть точно такого же типа. Если один INT, а другой INT UNSIGNED, вы получите эту ошибку.