MySQL错误1215:无法添加外键约束

MySQL错误1215:无法添加外键约束,mysql,Mysql,我已经到处寻找这个错误,并阅读了大量可能的解决方案,但我仍然无法找出我的脚本出了什么问题 在服务器中执行SQL脚本 错误:错误1215:无法添加外键约束 SQL代码: -- ----------------------------------------------------- -- Table `mydb`.`MARINE` -- ----------------------------------------------------- CREATE TABL

我已经到处寻找这个错误,并阅读了大量可能的解决方案,但我仍然无法找出我的脚本出了什么问题

在服务器中执行SQL脚本

错误:错误1215:无法添加外键约束

SQL代码:

    -- -----------------------------------------------------
    -- Table `mydb`.`MARINE`
    -- -----------------------------------------------------
    CREATE TABLE IF NOT EXISTS `mydb`.`MARINE` (
      `EDIPI` DECIMAL(10) NOT NULL,
      `LastName` VARCHAR(25) NOT NULL,
      `FirstName` VARCHAR(25) NOT NULL,
      `MiddleInitial` CHAR(1) NULL,
      `Rank` VARCHAR(6) NOT NULL,
      `MOS` DECIMAL(4) NOT NULL,
      `BATTLE_SPACE_Company` CHAR(1) NOT NULL,
      `BATTLE_SPACE_Section/Platoon` VARCHAR(2) NOT NULL,
      PRIMARY KEY (`EDIPI`),
      INDEX `fk_MARINE_BATTLE_SPACE1_idx` (`BATTLE_SPACE_Company` ASC, `BATTLE_SPACE_Section/Platoon` ASC),
      CONSTRAINT `fk_MARINE_BATTLE_SPACE1`
        FOREIGN KEY (`BATTLE_SPACE_Company` , `BATTLE_SPACE_Section/Platoon`)
        REFERENCES `mydb`.`BATTLE_SPACE` (`Company` , `Section/Platoon`)
        ON DELETE NO ACTION
        ON UPDATE NO ACTION)
    ENGINE = InnoDB
SQL脚本执行完成:语句:7个成功,1个失败

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

CREATE TABLE `battle_space` (
  `Company` char(1) NOT NULL,
  `Location` varchar(20) NOT NULL,
  `Section/Platoon` varchar(2) NOT NULL,
  PRIMARY KEY (`Company`,`Location`,`Section/Platoon`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

有两个问题

  • Incldue默认字符集=utf8也在海洋表格定义中
  • 您需要使外键中的列的顺序与父表的顺序相同
  • username@mydb[temp]>创建表空间(
    公司字符(1)不为空,
    位置varchar(20)不为空,
    节varchar(2)不为空,
    主键(公司、地点、部门)
    )ENGINE=InnoDB默认字符集=utf8;
    查询正常,0行受影响(0.02秒)

    username@mydb[temp]>如果不存在,则创建表(
    EDIPI十进制(10)不为空,
    LastName VARCHAR(25)不为空,
    FirstName VARCHAR(25)不为空,
    中间初始字符(1)为空,
    秩VARCHAR(6)不为空,
    MOS十进制(4)不为空,
    战斗空间连字符(1)不为空,
    BATTLE_SPACE_段VARCHAR(2)不为空,
    位置VARCHAR(20)不为空,
    主键(EDIPI),
    索引fk_MARINE_BATTLE_SPACE1_idx(BATTLE_SPACE_Company ASC,BATTLE_SPACE_Section ASC,位置),
    约束fk_MARINE_BATTLE_SPACE1外键(BATTLE_SPACE_Company,Location,BATTLE_SPACE_Section)
    参考作战空间(公司、地点、部门)
    删除时无操作更新时无操作
    )ENGINE=INNODB默认字符集=UTF8;
    
    查询确定,0行受影响(0.02秒)

    您可以缩进吗?@Rahul我意外地拒绝了您的编辑。对不起。@Drew Ok np。。我在回答中更新了很多东西。请检查我的更新答案。@Dave在创建MARINE表之前,您正在设置FK约束的表是否存在?Dave没有,您只是更改了格式。我把它滚回去了