我一直在使用mySQL创建一个数据库,但是当我试图转发我的EER图时,数据库一直在向我发送相同的错误,我尝试了多次修复,有人看到了问题所在吗?错误代码是1215。
在服务器中执行SQL脚本 错误:错误1215:无法添加外键约束
SQL代码:
-- -----------------------------------------------------
-- Table `mydb`.`Employee`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Employee` (
`EID` INT NOT NULL,
`Fname` VARCHAR(45) NOT NULL,
`Lname` VARCHAR(45) NOT NULL,
`AddressID` INT NOT NULL,
`PayLevel` FLOAT NOT NULL,
`Jobtitle` VARCHAR(45) NOT NULL,
`Date of Employment` DATE NOT NULL,
PRIMARY KEY (`EID`),
CONSTRAINT `fk_Employee_Store1`
FOREIGN KEY (`EID`)
REFERENCES `mydb`.`Store` (`EID`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDBSQL脚本执行完成:语句:8成功,1失败
以最终形式取回视图定义。没什么可拿的
这是父代码,我多次尝试切换关系,但是employee9the顶层代码)应该是商店的子程序。
-- -----------------------------------------------------
-- Table `mydb`.`Store`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Store` (
`SID` INT NOT NULL,
`StoreName` VARCHAR(45) NULL,
`AddressID` INT NULL,
`EID` INT NOT NULL,
`CID` INT NULL,
`MID` INT NULL,
PRIMARY KEY (`SID`, `EID`),
INDEX `fk_Store_Employee1_idx` (`EID` ASC),
CONSTRAINT `fk_Store_Employee1`
FOREIGN KEY (`EID`)
REFERENCES `mydb`.`Employee` (`EID`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;有人看到问题了吗,顺便说一下,我已经多次检查了该类型,它们是等价的。
发布于 2014-05-01 02:34:45
您正在尝试从员工创建一个外键,在存储中创建另一个外键。如果这是父/子关系,则只从子节点中使用父级的主键。如果您有n个<->n个关系,那么您需要一个包含两个外键的新表。如果我理解,这里需要一个新的表(work)和(SID,EID),两者都指向各自的表(存储和雇员)。此外,创建顺序也很重要(父母首先是子表,然后是子表)。
发布于 2014-05-01 02:27:19
您有一个外键约束在两个方向上操作。创建表时,第一个要创建的表将失败,因为第二个表不存在。我甚至不确定MySQL是否会接受这样的循环引用。您可能应该删除应用于mydb.store的外键约束。
但是,如果这是必需的,您可以要求MySQL在创建表时忽略外键检查。只需执行
SET foreign_key_checks = 0;在创建表和
SET foreign_key_checks = 1;在你完成之后
https://stackoverflow.com/questions/23401119
复制相似问题