我正在尝试在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
。,CONSTRAINTFK_lead_appointment_CancellationID
FOREIGN KEY(CancellationID
)REFERENCESlead_appointment_cancellation
(` )
我已查看here
但表格中没有数据。
答案 0 :(得分:4)
您不能对具有父表中尚不存在的预先存在的数据的列应用外键约束。
如果您运行以下内容来填充appointment_cancellation表,您应该可以在之后应用外键:
INSERT INTO appointment_cancellation
SELECT DISTINCT a.CancellationID
FROM appointment
答案 1 :(得分:0)
两个字段 - appointment
。CancellationID
和appointment_cancellation
。ID
- 需要完全相同的类型。如果一个是INT而另一个是INT UNSIGNED,那么你会收到这个错误。