【发布时间】:2020-05-10 12:55:42
【问题描述】:
我正在尝试在 phpmyadmin 中创建外键,但出现此错误:
在修订时创建外键时出错(检查数据类型)
我不明白,因为数据类型是相等的。所以,我想要的是创建一个从“acoustictreatment”到“filterspecifications”的外键,其中包含标签、offerid 和修订。但我得到了我提到的错误。
这是我的桌子:
CREATE TABLE `offer` (
`projectid` varchar(20) NOT NULL,
`customer` varchar(255) NOT NULL,
`creator` varchar(255) NOT NULL,
`date` date NOT NULL,
`revision` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
ALTER TABLE `offer`
ADD PRIMARY KEY (`projectid`,`revision`);
CREATE TABLE `filterspecifications` (
`tag` varchar(100) NOT NULL,
`gasFlow` double NOT NULL,
`dustToHandle` double NOT NULL,
`offerid` varchar(20) NOT NULL,
`selectedFilter` varchar(20) NOT NULL,
`revision` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
ALTER TABLE `filterspecifications`
ADD PRIMARY KEY (`tag`,`offerid`,`revision`),
ADD KEY `offerid` (`offerid`,`revision`);
ALTER TABLE `filterspecifications`
ADD CONSTRAINT `filterspecifications_ibfk_1`
FOREIGN KEY (`offerid`,`revision`) REFERENCES `offer` (`projectid`, `revision`) ON DELETE CASCADE ON UPDATE CASCADE;
CREATE TABLE `acoustictreatment` (
`tag` varchar(100) NOT NULL,
`offerid` varchar(20) NOT NULL,
`outputFanSilencer` tinyint(1) NOT NULL,
`fanAcousticInsulation` tinyint(1) NOT NULL,
`revision` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
ALTER TABLE `acoustictreatment`
ADD PRIMARY KEY (`tag`,`offerid`,`revision`);
【问题讨论】:
-
在sqlfiddle 中工作正常
-
这就是问题所在,它应该可以正常工作,但在 phpmyadmin 中出现错误
-
您的代码中没有外键约束。
-
我知道,因为如果我输入它,它就会显示错误
-
必须先创建报价,然后再尝试在其上创建外键。
标签: mysql phpmyadmin foreign-keys