mysql SQL不断返回Query failed,不知道从哪里开始

xmq68pz9  于 5个月前  发布在  Mysql
关注(0)|答案(1)|浏览(142)

错误代码一直显示“查询失败:ERROR 3780(HY 000)at line 15:Referencing column 'HorseID' and referenced column 'ID' in foreign key constraint 'lessonschedule_ibfk_1' are incompatible.”
这里有方向,以防你需要一个更好的想法,我正在努力做什么。
“数据库包含一个Horse表,其列为:

  • ID -整数,主键
  • RegisteredName -可变长度字符串

该数据库包含一个Student表,表中的列为:

  • ID -整数,主键
  • FirstName -可变长度字符串
  • LastName -可变长度字符串

创建第三个表,名为LessonSchedule,其中包含列:

  • HorseID -0到6.5万的整数,不能为NULL,外键引用Horse(ID)
  • StudentID -0到65000的整数,外键引用Student(ID)
  • LessonDateTime -日期/时间,不能为NULL
  • 主键是(HorseID,LessonDateTime)

如果从Horse中删除了一行,则具有相同马ID的行应自动从LessonSchedule中删除。
如果从Student中删除了一行,则应在LessonSchedule中自动将相同的学生ID设置为NULL。”

CREATE TABLE Horse (
    ID              SMALLINT UNSIGNED AUTO_INCREMENT,
    RegisteredName  VARCHAR(15),
    PRIMARY KEY (ID)
);

CREATE TABLE Student (
    ID             SMALLINT UNSIGNED AUTO_INCREMENT,
    FirstName      VARCHAR(20),
    LastName        VARCHAR(30),
    PRIMARY KEY (ID)
);

-- Your SQL statements go here 
CREATE TABLE LessonSchedule (
HorseID SMALLINT NOT NULL,
StudentID SMALLINT,
LessonDateTime DATETIME NOT NULL,
Primary Key (HorseID, StudentID, LessonDateTime),
Foreign Key (HorseID) REFERENCES Horse(ID),
Foreign Key (StudentID) REFERENCES Student(ID)
);

字符串
到目前为止,我已经尝试过修改外键约束,但是没有成功。我真的不知道该怎么做。

2nc8po8w

2nc8po8w1#

CREATE TABLE LessonSchedule (
HorseID SMALLINT UNSIGNED NOT NULL,
StudentID SMALLINT UNSIGNED,
LessonDateTime DATETIME NOT NULL,
Primary Key (HorseID, StudentID, LessonDateTime),
Foreign Key (HorseID) REFERENCES Horse(ID),
Foreign Key (StudentID) REFERENCES Student(ID)
);

字符串
原因是约束条件不同,您对两个主表的ID都设置了UNSIGNED,下面关联表中的字段也需要一致。

相关问题