這是我想用來設置數據庫的sql腳本。基本上我有一些人在做出選擇,比如測試/調查。我有關於每個人(人桌)的一些信息以及他們對每個問題(問題表)的答案。每個人都會回答多個問題(所以問題表的主鍵是(id, qid)
。MySQL創建外鍵錯誤150
這是我的問題,我想存儲一個與每個問題相關的整數數組,所以我創建了第三個表,數組,其主鍵是(id, qid, idx)
,其中idx是數組中值的索引,id和qid都應該在questions表中有對應的條目,所以我創建了這些外鍵,但是我得到了常見的150 errno當我做到這一點。我不知道爲什麼。
CREATE TABLE person (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
age INT,
income INT
);
CREATE TABLE questions (
id INT NOT NULL,
qid INT NOT NULL,
a INT,
b INT,
c INT,
PRIMARY KEY (id, qid),
FOREIGN KEY (id) REFERENCES person(id)
);
CREATE TABLE array (
id INT NOT NULL,
qid INT NOT NULL,
idx INT NOT NULL,
array_value INT NOT NULL,
PRIMARY KEY (id, qid, idx),
FOREIGN KEY (id) REFERENCES person(id),
FOREIGN KEY (qid) REFERENCES questions(qid)
);
這個腳本不起作用。如果你刪除它試圖建立對QID外鍵的最後一行,將運行該腳本withou t錯誤。
我試圖創建這個外鍵時發生了什麼錯誤?
從我+1 ...... – 2014-10-10 02:13:26
謝謝,這是有效的,是我的目標。你的回答給我的印象是,我正在做的不是處理我的情況的正確方法。有沒有更好的方式來做我想做的事情? (也就是將一個數組與一個表中的每個記錄關聯起來)。 – 2014-10-11 01:18:29
你對我看起來沒問題;我個人的偏好是將一列作爲問題表的主鍵;但是那些開發人員需要一個一致的DAO模式,需要一個單一的值,本地數據類型;不想將具有兩個成員的對象(類)的額外複雜性作爲標識符。 – spencer7593 2014-10-11 05:37:59