首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mysql错误# 1215

Mysql错误# 1215
EN

Stack Overflow用户
提问于 2014-05-01 02:18:27
回答 2查看 605关注 0票数 0

我一直在使用mySQL创建一个数据库,但是当我试图转发我的EER图时,数据库一直在向我发送相同的错误,我尝试了多次修复,有人看到了问题所在吗?错误代码是1215。

在服务器中执行SQL脚本 错误:错误1215:无法添加外键约束

SQL代码:

代码语言:javascript
复制
    -- -----------------------------------------------------
    -- 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 = InnoDB

SQL脚本执行完成:语句:8成功,1失败

以最终形式取回视图定义。没什么可拿的

这是父代码,我多次尝试切换关系,但是employee9the顶层代码)应该是商店的子程序。

代码语言:javascript
复制
    -- -----------------------------------------------------
-- 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;

有人看到问题了吗,顺便说一下,我已经多次检查了该类型,它们是等价的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-01 02:34:45

您正在尝试从员工创建一个外键,在存储中创建另一个外键。如果这是父/子关系,则只从子节点中使用父级的主键。如果您有n个<->n个关系,那么您需要一个包含两个外键的新表。如果我理解,这里需要一个新的表(work)和(SID,EID),两者都指向各自的表(存储和雇员)。此外,创建顺序也很重要(父母首先是子表,然后是子表)。

票数 1
EN

Stack Overflow用户

发布于 2014-05-01 02:27:19

您有一个外键约束在两个方向上操作。创建表时,第一个要创建的表将失败,因为第二个表不存在。我甚至不确定MySQL是否会接受这样的循环引用。您可能应该删除应用于mydb.store的外键约束。

但是,如果这是必需的,您可以要求MySQL在创建表时忽略外键检查。只需执行

代码语言:javascript
复制
SET foreign_key_checks = 0;

在创建表和

代码语言:javascript
复制
SET foreign_key_checks = 1;

在你完成之后

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23401119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档