首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL外键约束错误(1215)

MySQL外键约束错误(1215)
EN

Stack Overflow用户
提问于 2017-12-07 21:54:52
回答 1查看 40关注 0票数 1

我试图运行一个SQL脚本来通过MySQL工作台为项目生成数据库,但是每次尝试时,我都会收到一个1215错误,它不能添加外键约束。

错误是指下面的关系,我试图将faculty实体的faculty作为director_id字段下的grad_program的外键。

代码语言:javascript
复制
-- -----------------------------------------------------
-- Table `jupitercollege`.`faculty`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `jupitercollege`.`faculty` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(45) NOT NULL,
  `dept` VARCHAR(10) NOT NULL,
  `email` VARCHAR(45) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE INDEX `email_UNIQUE` (`email` ASC))
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `jupitercollege`.`grad_program`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `jupitercollege`.`grad_program` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(45) NOT NULL,
  `dept` VARCHAR(10) NOT NULL,
  `phone` VARCHAR(12) NULL DEFAULT 'UNKNOWN',
  `email` VARCHAR(45) NULL DEFAULT 'UNKNOWN',
  `director_id` INT NOT NULL,
  PRIMARY KEY (`id`),
  INDEX `director_id_idx` (`director_id` ASC),
  UNIQUE INDEX `email_UNIQUE` (`email` ASC),
  UNIQUE INDEX `name_UNIQUE` (`name` ASC),
  CONSTRAINT `director_id`
    FOREIGN KEY (`director_id`)
    REFERENCES `jupitercollege`.`faculty` (`id`)
    ON DELETE SET NULL
    ON UPDATE NO ACTION)
ENGINE = InnoDB;

我见过很多关于这个错误的帖子,但是没有一个能直接适用于我的场景,除非我误解了它们。如能帮助纠正这种情况,我们将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-07 22:25:31

您的子表有ON DELETE SET NULL。MySql 5.6文档状态

如果指定SET NULL操作,请确保没有将子表中的列声明为not NULL。

director_id列有一个null约束。删除该约束或删除ON DELETE子句。

https://dev.mysql.com/doc/refman/5.6/en/create-table-foreign-keys.html

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47704475

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档