我确信我错过了一些简单的事情。
RequestLog表:
CREATE TABLE `requestlog` (
`RequestID` int(10) unsigned NOT NULL AUTO_INCREMENT,
`RequestName` varchar(30) NOT NULL,
`RequestData` varchar(150) NOT NULL,
`RequestDate` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`Version` varchar(15) NOT NULL,
PRIMARY KEY (`RequestID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
ResponseLog表:
CREATE TABLE `responselog` (
`ResponseID` int(10) unsigned NOT NULL AUTO_INCREMENT,
`FK_RequestID` int(10) NOT NULL,
`ResponseText` text NOT NULL,
PRIMARY KEY (`ResponseID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
尝试使用
在ResponseLog.FK_RequestID上添加外键ALTER TABLE ResponseLog
ADD FOREIGN KEY (FK_RequestID) REFERENCES RequestLog(RequestID)
不要开枪,我错过了什么?
答案 0 :(得分:1)
ALTER TABLE
引用表ResponseLog
和RequestLog
。您的CREATE TABLE
语句会创建名为requestlog
和responselog
的表。尝试更改ALTER TABLE
语句,以便它使用具有相同大小写的表标识符。
此外,它可能是主要问题,引用的字段具有不同的数据类型。一个是int,另一个是unsigned int。数据类型必须匹配,否则字段可能变得不一致。 MySQL知道这一点并阻止您创建损坏的外键。