3

我正在尝试在 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_CancellationIDFOREIGN KEY ( CancellationID) REFERENCES lead_appointment_cancellation(`)

我在这里检查过

但表中没有数据。

4

2 回答 2

4

您不能对具有父表中不存在的预先存在数据的列应用外键约束。

如果您运行以下命令来填充约会取消表,您应该能够在之后应用外键:

INSERT INTO appointment_cancellation
SELECT DISTINCT a.CancellationID
  FROM appointment
于 2010-06-08T22:18:49.180 回答
0

这两个字段 - appointmentCancellationIDappointment_cancellationID- 需要是完全相同的类型。如果一个是 INT 而另一个是 INT UNSIGNED,您将收到此错误。

于 2010-06-08T22:24:48.383 回答