Создание внешнего ключа в MySQL выдает ошибку: - PullRequest
3 голосов
/ 09 июня 2010

Я пытаюсь создать внешний ключ для таблицы в 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., CONSTRAINT FK_lead_appointment_CancellationID FOREIGN KEY (CancellationID)

Я проверил здесь

но в таблице нет данных.

Ответы [ 2 ]

4 голосов
/ 09 июня 2010

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

Если вы запустите следующую команду, чтобы заполнить таблицу assign_cancellation, вы сможете применить внешний ключ позже:

INSERT INTO appointment_cancellation
SELECT DISTINCT a.CancellationID
  FROM appointment
0 голосов
/ 09 июня 2010

Два поля - appointment. CancellationID и appointment_cancellation. ID - должны быть абсолютно одинакового типа.Если один INT, а другой INT UNSIGNED, вы получите эту ошибку.

...