MySQL外键约束错误(1215)

时间:2017-12-07 21:54:53

标签: mysql foreign-keys mysql-workbench

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

错误是参考下面的关系,我试图将id实体的faculty作为grad_programdirector_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]);
};

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

1 个答案:

答案 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