2013-12-17 38 views
0

當我運行此操作時,我僅收到錯誤150。其他表是InnoDB,類型是主鍵,數據類型匹配。所以我不明白我做錯了什麼,(我沒有看到明顯的語法錯誤)。有任何想法嗎?MySQL無法使用外鍵創建新表

CREATE TABLE grouptosite (
    groups_id BIGINT(20), 
    usertogroup_groupID BIGINT(20), 
usertogroup_userID BIGINT(20), 
    usertosite_id INT(10), 

    gts_id INT(10) AUTO_INCREMENT NOT NULL, 
    PRIMARY KEY (gts_id), 
index (gts_id), 
index (groups_id), 
    index (usertogroup_groupID), 
index (usertogroup_userID), 
    index (usertosite_id), 

FOREIGN KEY (groups_id) 
    REFERENCES groups(id) 
    ON UPDATE CASCADE ON DELETE RESTRICT, 
    FOREIGN KEY (usertogroup_groupID, usertogroup_userID) 
    REFERENCES usertogroup(groupID, userID) 
    ON UPDATE CASCADE ON DELETE RESTRICT, 
    FOREIGN KEY (usertosite_id) 
    REFERENCES usertosite(id) 
    ON UPDATE CASCADE ON DELETE RESTRICT 
) ENGINE=INNODB; 
+0

這應該解決你的問題http://stackoverflow.com/questions/825362/mysql-error-150-foreign-keys – user2600629

+0

什麼'組','usertogroup'和'usertosite'表是什麼樣子? –

+0

你確定你的列是同一類型嗎?我首先創建了ID爲BIGINT的usertosite表(遵循其他表的相同模式),但grouptosite.usertosite_id字段爲INT。 http://sqlfiddle.com/#!2/d821a – xecaps12

回答

1

你確定你的列是相同的類型嗎?我首先創建了usertosite表,其ID爲BIGINT(遵循其他表的相同模式),但grouptosite.usertosite_id列爲INT:http://sqlfiddle.com/#!2/d821a

如另一條評論所述,foreign keys的數據類型必須相同。