我正在尝试运行SQL
脚本来通过MySQL工作台为项目生成数据库,但每次尝试时,我都会收到1215
错误,说它无法添加外键约束
错误是参考下面的关系,我试图将id
实体的faculty
作为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;
} field。
function checksize(files)
{
var img = new Image();
img.onload = function () {
var sizes = {
width: this.width,
height: this.height
};
if (sizes.width != 600 || sizes.height != 800)
{
alert("Error: Image size should be 600 x 800px");
return false;
}
else
{
return true;
}
img.src = _URL.createObjectURL(files[0]);
};
我看过很多关于这个错误的帖子,但没有一个真正直接适用于我的场景,除非我误解了它们。任何纠正这种情况的援助都将受到赞赏。
答案 0 :(得分:2)
您的子表格有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