gpt4 book ai didi

mysql - 无法在 MySQL 中创建外键约束。错误编号 150

转载 作者:可可西里 更新时间:2023-11-01 08:48:10 25 4
gpt4 key购买 nike

我正在尝试创建数据模型。它相当复杂,但我正在尝试将 Splits 表链接到 Trials 表。模型截图如下:

enter image description here

我正在尝试使 Splits.protocol + Splits.resultID + Splits.trialNumber 成为 Trials 的外键。这三个关系是Trials的主键。我正在使用 MySQL Workbench 执行此操作,它会抛出错误 #150。有谁知道问题出在哪里?

这是 SQL 语句以及它在尝试执行它时抛出的错误:

ERROR 1005: Can't create table '403898_BAMNormalized.#sql-7285_6c29081' (errno: 150)

SQL Statement:

ALTER TABLE `403898_BAMNormalized`.`Splits`

ADD CONSTRAINT `FK_FromTrial`
FOREIGN KEY (`protocol` , `resultID` , `trialNumber`)
REFERENCES `403898_BAMNormalized`.`Trials` (`protocol` , `resultID` , `trialNumber`)
ON DELETE NO ACTION
ON UPDATE NO ACTION

ERROR: Error when running failback script. Details follow.

ERROR 1050: Table 'Splits' already exists

SQL Statement:

CREATE TABLE `Splits` (
`protocol` varchar(255) NOT NULL,
`resultID` int(11) NOT NULL,
`trialNumber` int(11) NOT NULL,
`splitNumber` int(11) NOT NULL,
`splitScore` decimal(10,0) NOT NULL,
PRIMARY KEY (`protocol`,`resultID`,`trialNumber`,`splitNumber`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1

下面是建表语句:

CREATE TABLE `Trials` (
`resultID` int(11) NOT NULL,
`protocol` varchar(255) NOT NULL,
`trialNumber` int(11) NOT NULL,
`trialScore` decimal(10,0) NOT NULL,
`best` char(1) DEFAULT NULL,
`DQFlag` varchar(45) DEFAULT NULL,
PRIMARY KEY (`resultID`,`protocol`,`trialNumber`),
CONSTRAINT `FK_trialID` FOREIGN KEY (`resultID`, `protocol`) REFERENCES `ResultsDetails` (`resultID`, `protocol`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

CREATE TABLE `Splits` (
`protocol` varchar(255) NOT NULL,
`resultID` int(11) NOT NULL,
`trialNumber` int(11) NOT NULL,
`splitNumber` int(11) NOT NULL,
`splitScore` decimal(10,0) NOT NULL,
PRIMARY KEY (`protocol`,`resultID`,`trialNumber`,`splitNumber`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

试验表索引:

enter image description here

最佳答案

重新排序索引以表示与外键相同的顺序是解决方案。有关详细信息,请参阅原始帖子所附的评论。

关于mysql - 无法在 MySQL 中创建外键约束。错误编号 150,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21962603/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com