2012-04-18 59 views
0

我想創建數據庫表並讓它們連接。我確保我的數據類型是相同的。我也確保我的表格是在添加FK之前製作的。任何建議將不勝感激。獲取1005 MySQL錯誤,不知道爲什麼

SQL query: 

ALTER TABLE `Member` ADD FOREIGN KEY (memberId) REFERENCES `Order_Head` (`memberId`) ; 

MySQL said: Documentation 
#1005 - Can't create table 'test2.#sql-184c_63' (errno: 150) (Details...) 





-- --- 
-- Table 'Order_Head' 
-- 
-- --- 

DROP TABLE IF EXISTS `Order_Head`; 

CREATE TABLE `Order_Head` (
    `orderId` INTEGER NOT NULL AUTO_INCREMENT, 
    `memberId` INTEGER NOT NULL, 
    `date` DATE NOT NULL, 
    PRIMARY KEY (`orderId`, `memberId`) 
); 

-- --- 
-- Table 'Member' 
-- 
-- --- 

DROP TABLE IF EXISTS `Member`; 

CREATE TABLE `Member` (
    `memberId` INTEGER NOT NULL AUTO_INCREMENT, 
    `userName` VARCHAR(50) NOT NULL, 
    `password` VARCHAR(50) NOT NULL, 
    `email` VARCHAR(100) NOT NULL, 
    `isAdmin` BOOLEAN NOT NULL DEFAULT false, 
    PRIMARY KEY (`memberId`) 
); 

-- --- 
-- Foreign Keys 
-- --- 

ALTER TABLE `Member` ADD FOREIGN KEY (memberId) REFERENCES `Order_Head` (`memberId`); 

-- --- 
-- Table Properties 
-- --- 
ALTER TABLE `Order_Head` ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin; 
ALTER TABLE `Member` ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin; 

回答

1

這可能是因爲你正在試圖建立外鍵是主鍵和具有AUTO_INCREMENT,你的意思也許是什麼:

ALTER TABLE `Order_Head` ADD FOREIGN KEY (memberId) REFERENCES `Member` (`memberId`); 

你沒有創建任何特別的原因CREATE TABLE聲明中的外鍵?如果不是,那麼你應該也可以這樣做。

+0

這是因爲我不試圖將FK指向可能還不存在的表。 – FunkyMonk91 2012-04-18 23:43:38

+0

我只是有時間來測試它,它工作。我現在明白我的錯誤。非常感謝你! – FunkyMonk91 2012-04-19 02:11:02

+0

好的。好:)和使用ALTER的好點 – jadkik94 2012-04-19 08:57:02

相關問題