Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql &引用;“外键约束格式不正确”;_Mysql_Sql_Mysql Workbench_Mariadb - Fatal编程技术网

Mysql &引用;“外键约束格式不正确”;

Mysql &引用;“外键约束格式不正确”;,mysql,sql,mysql-workbench,mariadb,Mysql,Sql,Mysql Workbench,Mariadb,我有以下SQL代码: CREATE TABLE IF NOT EXISTS `deputy`.`Votings` ( `id` INT UNSIGNED NOT NULL AUTO_INCREMENT, `VRSetId` INT UNSIGNED NOT NULL, `LNSetIdOfMeeting` INT UNSIGNED NOT NULL, `VRSetIdOfMeeting` INT UNSIGNED NOT NULL, `meetingId` INT UNSIG

我有以下SQL代码:

CREATE TABLE IF NOT EXISTS `deputy`.`Votings` (
  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
  `VRSetId` INT UNSIGNED NOT NULL,
  `LNSetIdOfMeeting` INT UNSIGNED NOT NULL,
  `VRSetIdOfMeeting` INT UNSIGNED NOT NULL,
  `meetingId` INT UNSIGNED NOT NULL,
  PRIMARY KEY (`id`, `VRSetId`),
  CONSTRAINT `fk_Votings_VotingRulesSets1`
    FOREIGN KEY (`VRSetId`)
    REFERENCES `deputy`.`VRSets` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_Votings_Meetings1`
    FOREIGN KEY (`LNSetIdOfMeeting` , `VRSetIdOfMeeting` , `meetingId`)
    REFERENCES `deputy`.`Meetings` (`LNSetId` , `VRSetId` , `id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;
主键由两个字段组成:“id”和“VRSetId”;“VRSetId”也是外键,因为存在“VRSets”表,该表标识了与“Votings”的1对1关系。“Meetings”表还有第二个外键,它本身有一个主键,除了“id”字段外,还有两个外键。。。“会议”表与“投票”有一对多的关系,所以“投票”最后有这么多键。。。这很好,因为我使用它们以多种不同的方式获取数据。问题是,由于我在所有“id”字段中都添加了自动递增功能,所以出现了这样的错误:

ERROR: Error 1005: Can't create table `deputy`.`Votings` (errno: 150 "Foreign key constraint is incorrectly formed")
有一个“会议”表,具有类似格式的键,工作正常:

CREATE TABLE IF NOT EXISTS `deputy`.`Meetings` (
  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
  `LNSetId` INT UNSIGNED NOT NULL,
  `VRSetId` INT UNSIGNED NOT NULL,
  `LNSetIdOfCSet` INT UNSIGNED NOT NULL,
  `CSetId` INT UNSIGNED NOT NULL,
  PRIMARY KEY (`id`, `LNSetId`, `VRSetId`),
  CONSTRAINT `fk_Meetings_LegalNumbersSets1`
    FOREIGN KEY (`LNSetId`)
    REFERENCES `deputy`.`LNSets` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_Meetings_VotingRulesSets1`
    FOREIGN KEY (`VRSetId`)
    REFERENCES `deputy`.`VRSets` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_Meetings_ConfigurationSets1`
    FOREIGN KEY (`LNSetIdOfCSet` , `CSetId`)
    REFERENCES `deputy`.`CSets` (`LNSetId` , `id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;
最后一个表与“Votings”相关(我删除了所有表中的数据字段以使其看起来更清晰):


在我做了一些小改动之前,数据库运行得很好,现在我不确定发生了什么。。。整个过程是由MySQL Workbench自动生成的,我正在MariaDB上运行脚本。

引用的列需要索引。
会议
表上的主键为

PRIMARY KEY (`id`, `LNSetId`, `VRSetId`)
但您在
votings
表中的引用如下:

FOREIGN KEY (`LNSetIdOfMeeting` , `VRSetIdOfMeeting` , `meetingId`)
REFERENCES `deputy`.`Meetings` (`LNSetId` , `VRSetId` , `id`)
索引中列的顺序很重要,因此将其更改为

FOREIGN KEY (`meetingId`, `LNSetIdOfMeeting` , `VRSetIdOfMeeting`)
REFERENCES `deputy`.`Meetings` (`id`, `LNSetId` , `VRSetId`)
它会起作用的

  • 现场观看它的工作

引用的列需要索引。
会议
表上的主键为

PRIMARY KEY (`id`, `LNSetId`, `VRSetId`)
但您在
votings
表中的引用如下:

FOREIGN KEY (`LNSetIdOfMeeting` , `VRSetIdOfMeeting` , `meetingId`)
REFERENCES `deputy`.`Meetings` (`LNSetId` , `VRSetId` , `id`)
索引中列的顺序很重要,因此将其更改为

FOREIGN KEY (`meetingId`, `LNSetIdOfMeeting` , `VRSetIdOfMeeting`)
REFERENCES `deputy`.`Meetings` (`id`, `LNSetId` , `VRSetId`)
它会起作用的

  • 现场观看它的工作

引用的列需要索引。
会议
表上的主键为

PRIMARY KEY (`id`, `LNSetId`, `VRSetId`)
但您在
votings
表中的引用如下:

FOREIGN KEY (`LNSetIdOfMeeting` , `VRSetIdOfMeeting` , `meetingId`)
REFERENCES `deputy`.`Meetings` (`LNSetId` , `VRSetId` , `id`)
索引中列的顺序很重要,因此将其更改为

FOREIGN KEY (`meetingId`, `LNSetIdOfMeeting` , `VRSetIdOfMeeting`)
REFERENCES `deputy`.`Meetings` (`id`, `LNSetId` , `VRSetId`)
它会起作用的

  • 现场观看它的工作

引用的列需要索引。
会议
表上的主键为

PRIMARY KEY (`id`, `LNSetId`, `VRSetId`)
但您在
votings
表中的引用如下:

FOREIGN KEY (`LNSetIdOfMeeting` , `VRSetIdOfMeeting` , `meetingId`)
REFERENCES `deputy`.`Meetings` (`LNSetId` , `VRSetId` , `id`)
索引中列的顺序很重要,因此将其更改为

FOREIGN KEY (`meetingId`, `LNSetIdOfMeeting` , `VRSetIdOfMeeting`)
REFERENCES `deputy`.`Meetings` (`id`, `LNSetId` , `VRSetId`)
它会起作用的

  • 现场观看它的工作

您是否可以添加正在引用的表的
创建表
语法?如果您只使用一个外键约束,代码是否有效?如果有帮助,请向上投票:)您是否可以添加所引用表的
CREATE TABLE
语法?如果您只使用一个外键约束,代码是否有效?如果有帮助,请向上投票:)您是否可以添加所引用表的
CREATE TABLE
语法?如果您只使用一个外键约束,代码是否有效?如果有帮助,请向上投票:)您是否可以添加所引用表的
CREATE TABLE
语法?如果你只使用其中一个外键约束,代码是否有效?如果有帮助,请投票回答:)谢谢,我不知道。当我将“id”列置于顶部以使AI属性正常工作时,顺序会自动更改。谢谢,我不知道。当我将“id”列置于顶部以使AI属性正常工作时,顺序会自动更改。谢谢,我不知道。当我将“id”列置于顶部以使AI属性正常工作时,顺序会自动更改。谢谢,我不知道。当我将“id”列置于顶部以使AI属性正常工作时,顺序会自动更改。