2015-01-09 106 views
0

我相信我錯過了一些簡單的東西。簡單添加外鍵返回#1215不能添加外鍵約束

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) 

不要拍我,我算什麼我錯過了?

回答

1

ALTER TABLE參考表ResponseLogRequestLog。您的CREATE TABLE語句創建名爲requestlogresponselog的表。嘗試更改您的ALTER TABLE語句,以便它使用具有相同大小寫的表格標識符。

另外,它可能是主要問題,所引用的字段有不同的數據類型。一個是int,另一個是unsigned int。數據類型必須匹配,否則這些字段可能會變得不一致。 MySQL知道這一點,並防止你創建一個破損的外鍵。

+0

主要問題是數據類型不匹配:引用列的數據類型不匹配引用列。 **'INT' **不匹配**'INT UNSIGNED' **。 – spencer7593 2015-01-09 23:11:03

+0

是的,這也是我的想法。表名不匹配太突出。 – ragol 2015-01-09 23:14:34