首页 > 解决方案 > 查询错误 (1215) 尝试添加到飞轮数据库时无法添加外键约束

问题描述

我正在尝试添加几个表以获取一些我正在添加到飞轮站点的兼容性信息,当我尝试生成表时,我收到“查询错误(1215)无法添加外键约束。” 这足够模糊,让我不知道为什么。据我所知,根据我的研究,我的语法很好,并且我作为外键添加的表/列组合肯定存在。我对 mySQL 和 flywheel 作为一个平台都很陌生,所以这可能是非常简单的事情,我只是不知道,如果是这种情况,我道歉

CREATE TABLE `products` (
      `productsID` INT,
      `productName` VARCHAR(45) NOT NULL,
      `ios9` DOUBLE NULL,
      `ios10` DOUBLE NULL,
      `ios11` DOUBLE NULL,
      `ios12` DOUBLE NULL,
      `Notes` VARCHAR(45) NULL,
      `Android Compatible` BINARY NULL,
      `Web App Screen size` VARCHAR(45) NULL,
      `Supported Browsers` VARCHAR(45) NULL,
      `Web App Minimum Resolution` VARCHAR(45) NULL,
      `Web App Aspect Ratio` VARCHAR(45) NULL,
      PRIMARY KEY (`productsID`),
      UNIQUE INDEX `ProductsID_UNIQUE` (`productsID` ASC),
      INDEX `compatibilityID_idx` (
        `ios9` ASC,
        `ios10` ASC,
        `ios11` ASC,
        `ios12` ASC
      ),
       FOREIGN KEY (`ios9`, `ios10`, `ios11`, `ios12`) REFERENCES `compatibilityValues` (
        `compatibilityId`,
        `compatibilityId`,
        `compatibilityId`,
        `compatibilityId`
      ) ON DELETE NO ACTION ON UPDATE NO ACTION
    ) ENGINE = InnoDB

标签: mysqlforeign-keysconstraints

解决方案


一个朋友帮我解决了这个问题!

事实证明,默认情况下,mySQL 试图一次性完成所有 FK 语句(我使用了可视化设计器),而飞轮不喜欢这样。

像这样分解 FK 使它起作用:

       FOREIGN KEY (`ios9`) REFERENCES `compatibilityValues` (
    `compatibilityId`  ) ,
   FOREIGN KEY (`ios10`) REFERENCES `compatibilityValues` (
    `compatibilityId`  ) ,
   FOREIGN KEY (`ios11`) REFERENCES `compatibilityValues` (
    `compatibilityId`  ) ,
   FOREIGN KEY (`ios12`) REFERENCES `compatibilityValues` (
    `compatibilityId`  ) 

推荐阅读