You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL FOREIGN KEY语法错误求助:LessonSchedule表创建失败

MySQL外键语法错误排查及作业要求修正

报错直接原因

你的SQL报错核心是外键引用的语法格式错误。MySQL中定义外键的正确语法是:

FOREIGN KEY(当前表列名) REFERENCES 关联表名(关联表列名)

你错误地将关联表名放在括号里,写成了REFERENCES (Cat)ID,正确写法应为REFERENCES Cat(ID),同理(Owner)ID要改为Owner(ID)。

作业要求匹配修正

除了语法错误,你的代码还不符合作业要求,需同步调整:

  • 表名需改为Lessons(你写的是LessonSchedule)
  • 作业要求包含StudentID列(外键引用Student(ID)),你误写为OwnerID;同时作业要求删除Owner表行时将Lessons表的OwnerID设为NULL,因此表中需要同时保留StudentID和OwnerID两个列

修正后的完整代码

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

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

-- 若Student表已由题目提供可删除此段
CREATE TABLE Student (
    ID SMALLINT UNSIGNED AUTO_INCREMENT,
    PRIMARY KEY (ID)
);

-- 符合作业要求的Lessons表
CREATE TABLE Lessons(
   CatID SMALLINT UNSIGNED NOT NULL,
   StudentID SMALLINT UNSIGNED NOT NULL,
   OwnerID SMALLINT UNSIGNED,
   LessonDateTime DATETIME NOT NULL,
   PRIMARY KEY (CatID, LessonDateTime),
   FOREIGN KEY(CatID) REFERENCES Cat(ID)
       ON DELETE CASCADE,
   FOREIGN KEY(StudentID) REFERENCES Student(ID),
   FOREIGN KEY(OwnerID) REFERENCES Owner(ID)
       ON DELETE SET NULL
);

关键修改说明

  1. 修正外键引用语法,将错误的(表名)列名格式改为表名(列名)
  2. 调整表名为Lessons,匹配作业要求
  3. 添加StudentID列并设置对应外键,保留OwnerID列并配置ON DELETE SET NULL规则
  4. 补充Student表创建语句(若题目已提供该表可忽略)

内容的提问来源于stack exchange,提问作者Xiong

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 16:35:22