在MySQL中创建外键会产生错误:

时间:2010-06-08 22:07:04

标签: sql mysql foreign-keys mysql-error-1452

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

我已查看here

但表格中没有数据。

2 个答案:

答案 0 :(得分:4)

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

如果您运行以下内容来填充appointment_cancellation表,您应该可以在之后应用外键:

INSERT INTO appointment_cancellation
SELECT DISTINCT a.CancellationID
  FROM appointment

答案 1 :(得分:0)

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