MySQL外键自己的表

时间:2015-03-08 05:06:08

标签: mysql

我试图用它自己的空外键创建一个表。这是我的代码:

CREATE TABLE IF NOT EXISTS `modules_submodules` (
    `submodule_id` INT NOT NULL AUTO_INCREMENT,
    `submodule_name` VARCHAR(50) NOT NULL,
    `submodule_idparent` INT  NULL,
    `submodule_icon` VARCHAR(100) NULL,
    PRIMARY KEY (`submodule_id`),
    UNIQUE INDEX `modules_submodule_id_UNIQUE` (`submodule_id` ASC),
    INDEX `modules_submodules_to_submodules_idx` (`submodule_idparent` ASC),
    CONSTRAINT `submodules_to_submodules` FOREIGN KEY (`submodule_idparent`)
        REFERENCES `submodules` (`submodule_id`)
        ON DELETE NO ACTION ON UPDATE NO ACTION
)  ENGINE=InnoDB DEFAULT CHARACTER SET=utf8 COLLATE = utf8_general_ci;

但是我收到了这个错误:

  

错误代码:1215。无法添加外键约束0.078秒

导致此错误的原因是什么?如何解决?

1 个答案:

答案 0 :(得分:2)

您错误输入了参考表的名称:

REFERENCES `submodules` (`submodule_id`)

而不是

REFERENCES `modules_submodules` (`submodule_id`)

完整查询:

CREATE TABLE IF NOT EXISTS `modules_submodules` (
    `submodule_id` INT NOT NULL AUTO_INCREMENT,
    `submodule_name` VARCHAR(50) NOT NULL,
    `submodule_idparent` INT  NULL,
    `submodule_icon` VARCHAR(100) NULL,
    PRIMARY KEY (`submodule_id`),
    UNIQUE INDEX `modules_submodule_id_UNIQUE` (`submodule_id` ASC),
    INDEX `modules_submodules_to_submodules_idx` (`submodule_idparent` ASC),
    CONSTRAINT `submodules_to_submodules` FOREIGN KEY (`submodule_idparent`)
        REFERENCES `modules_submodules` (`submodule_id`)
        ON DELETE NO ACTION ON UPDATE NO ACTION
)  ENGINE=InnoDB DEFAULT CHARACTER SET=utf8 COLLATE = utf8_general_ci;