错误1452 - 外键约束失败

时间:2015-02-03 20:36:20

标签: mysql foreign-keys

这是两个MySQL表:

CREATE TABLE LPC.ChildInformation
(
    ChildID CHAR(4),
    FirstName TEXT,
    Surname TEXT,
    Gender TEXT,
    DateOfBirth DATE,
    PRIMARY KEY (ChildID)
);

CREATE TABLE LPC.ChildAttendance
(
    ChildID CHAR(4),
    DateAttended DATE,
    TypeOfDay VARCHAR(15),
    TypeOfTime VARCHAR(15),
    PlannedArrivalTime TIME,
    PlannedDepartureTime TIME,
    ActualArrivalTime TIME,
    ActualDepartureTime TIME,
    PRIMARY KEY (ChildID, DateAttended),
    FOREIGN KEY (ChildID) REFERENCES ChildInformation(ChildID)
);

执行以下查询时没有任何问题:

USE LPC;
INSERT INTO ChildInformation(ChildID, FirstName, Surname, Gender, DateOfBirth)
VALUES('C002', 'Shanaya', 'Talang', 'Female', '2010/02/03');

但是,此查询并不是:

USE LPC;
INSERT INTO ChildAttendance(ChildID, DateAttended, TypeOfDay, TypeOfTime, PlannedArrivalTime, PlannedDepartureTime, ActualArrivalTime, ActualDepartureTime)
VALUES ('C002','2015/01/26', 'Weekday', 'AfterSchool', '15:40:00', '17:30:00', '15:40:00', '17:47:00');

出现以下错误消息: 错误代码:1452。无法添加或更新子行;外键约束失败......

我在其他地方寻求建议,但没有发现任何可以帮助我的事情。我非常感谢任何有用的建议,因为我需要尽快解决这个问题。谢谢:))

1 个答案:

答案 0 :(得分:0)

这可能只是一个错字:您插入ChildInformation的孩子的ChildID为“C001”,但您插入ChildAttendance的行会引用{{1} “C002”。

由于您明确定义了约束,ChildID中的行必须引用ChildAttendance中的现有行,这是无效的,并且被设计拒绝。