gpt4 book ai didi

MySQL 外键约束错误 (1215)

转载 作者:行者123 更新时间:2023-11-29 05:57:50 25 4
gpt4 key购买 nike

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

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

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

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

最佳答案

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

If you specify a SET NULL action, make sure that you have not declared the columns in the child table as NOT NULL.

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

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

关于MySQL 外键约束错误 (1215),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47704475/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com