【发布时间】:2018-04-14 22:11:08
【问题描述】:
我不知道为什么我在这里收到错误。
当前表格:
CREATE TABLE `Clients` (
`ClientID` varchar(8) NOT NULL,
`Age` varchar(20) NOT NULL,
`Postcode` varchar(6) NOT NULL,
PRIMARY KEY (`ClientID`,`Age`,`Postcode`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE `Disclosure` (
`ClientID` varchar(8) NOT NULL,
`Fname` varchar(100) DEFAULT NULL,
`Lname` varchar(100) DEFAULT NULL,
`Email` varchar(100) DEFAULT NULL,
`Postcode` varchar(6) NOT NULL,
`Offender` varchar(45) DEFAULT NULL,
`Location` varchar(100) DEFAULT NULL,
`Age` varchar(20) NOT NULL,
`Support` varchar(45) DEFAULT NULL,
`Disclosure` varchar(1000) DEFAULT NULL,
PRIMARY KEY (`ClientID`,`Postcode`,`Age`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
尝试添加外键
ALTER TABLE `FYP`.`Disclosure`
ADD CONSTRAINT `client`
FOREIGN KEY (`ClientID` , `Postcode` , `Age`)
REFERENCES `FYP`.`Clients` (`ClientID` , `Postcode` , `Age`)
ON DELETE NO ACTION
ON UPDATE CASCADE;
我已经尝试使用 show status 来查看错误是什么,但我仍然无法弄清楚。
SHOW ENGINE INNODB STATUS
返回:
------------ 最新的外键错误 ------------------------ 171102 11:35:10 表 FYP/#sql-266_33b 的外键约束出错:
外键(
ClientID,Postcode,Age)参考FYP.Clients(ClientID,Postcode,Age) 删除否 更新级联操作:在引用中找不到索引 引用的列显示为第一列的表,或 表中的列类型和引用的表不匹配 约束。注意 ENUM 和 SET 的内部存储类型 在使用 >= InnoDB-4.1.12 创建的表中进行了更改,并且在 新表中的此类列不能引用旧表。看 http://dev.mysql.com/doc/refman/5.5/en/innodb-foreign-key-constraints.html 正确的外键定义。
【问题讨论】:
标签: mysql