【问题标题】:MySQL - Error Code: 1215. Cannot add foreign key constraintMySQL - 错误代码:1215。无法添加外键约束
【发布时间】:2015-05-27 12:26:45
【问题描述】:

我尝试在 MySQL 中创建 3 个表,但收到错误代码 1215。

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

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

执行上述脚本时没有问题 - 两个表都已创建。

执行此脚本时:

CREATE TABLE LPC.DailyAttendancePrice
(
    AttendanceID CHAR(6),
    DateAttended DATE, 
    TotalPrice DECIMAL(5,2),
    PRIMARY KEY (AttendanceID, DateAttended),
    FOREIGN KEY (AttendanceID) REFERENCES ChildAttendance(AttendanceID),
    FOREIGN KEY (DateAttended) REFERENCES ChildAttendance(DateAttended)
);

然后我收到错误。我不确定这个错误是如何发生的,所以非常感谢任何帮助,

【问题讨论】:

    标签: mysql key create-table


    【解决方案1】:

    不是 100% 肯定,但不是这样,您只能对其他表中的主键进行外键引用吗? 在最后一行,您尝试引用的是日期而非主键。

    【讨论】:

      【解决方案2】:

      以前在 Stack 上也出现过类似的问题。请参阅以下链接: Cannot add foreign key constraint on a date field

      【讨论】:

        【解决方案3】:

        外键列只能引用父表中键的最左侧列。但是您的列ChildAttendance.DateAttended 不是任何键的一部分。

        数据建模似乎没有意义。我猜你想要一个记录ChildAttendance 中给定行价格的表?为什么不只是:

        ALTER TABLE ChildAttendance ADD COLUMN TotalPrice DECIMAL(5,2);
        

        【讨论】:

          猜你喜欢
          • 2018-05-13
          • 2017-09-18
          • 2014-10-22
          • 2016-06-04
          • 1970-01-01
          • 1970-01-01
          • 2016-10-27
          • 2016-05-01
          • 2018-11-10
          相关资源
          最近更新 更多