【问题标题】:MySQL Foreign Key Constraint Error (1215)MySQL 外键约束错误 (1215)
【发布时间】:2023-03-13 08:45:01
【问题描述】:

我正在尝试运行 SQL 脚本以通过 MySQL 工作台为项目生成我的数据库,但每次尝试时,我都会收到 1215 错误,提示它无法添加外键约束。

该错误与以下关系有关,我试图将faculty 实体的id 作为grad_program 字段下grad_program 的外键。

-- -----------------------------------------------------
-- 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;

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

【问题讨论】:

    标签: mysql foreign-keys mysql-workbench


    【解决方案1】:

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

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

    您的 director_id 列有一个非空约束。删除该约束或删除 ON DELETE 子句。

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

    【讨论】:

      猜你喜欢
      • 2018-09-15
      • 2013-06-02
      • 2018-04-28
      相关资源
      最近更新 更多