Создание внешнего ключа в 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, вы получите эту ошибку.

Другие вопросы по тегам