我试图用它自己的空外键创建一个表。这是我的代码:
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秒
导致此错误的原因是什么?如何解决?
答案 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;