2012-02-28 92 views
4

我知道關於這個錯誤有很多關於SO的問題,但即使應用我從這些收集的東西,我仍然得到「不能創建表(errno:150 )「MySQL errno:150不能創建表

CREATE TABLE sch_results 
(
id INT NOT NULL AUTO_INCREMENT, 
s_id INT UNSIGNED NOT NULL, 
r_eid VARCHAR(10) NOT NULL, 
cohorts INT, 
allstudents INT, 
comments TEXT, 
PRIMARY KEY (id), 
FOREIGN KEY (s_id) REFERENCES scholarships (id), 
FOREIGN KEY (r_eid) REFERENCES sch_recommenders (eid) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

我已經檢查過外鍵都存儲在它們各自的表中的名字下。
我檢查過它們各自的數據類型是否與此查詢匹配。 我檢查了兩個現有表使用InnoDB和utf8。
我將UNSIGNED NOT NULL添加到外鍵。
我在表格中索引了兩個外鍵。 最初,我使用s_id和r_id,但聽說這可能會導致一些問題。 r_eid也是獨一無二的,所以我轉向了這一點。這不是主要關鍵。

我錯過了什麼?謝謝!

課程學習:徹底檢查數據類型的各個方面!

+0

所有列具有相同的定義?什麼是獎學金和sch_recommander如何? – 2012-02-28 02:13:59

+0

獎學金ID:INT長度3 sch_recommenders eid:VARCHAR長度10 – Beatrice 2012-02-28 02:15:16

+0

您可以同時顯示獎學金和sch_recommenders表結構嗎? – 2012-02-28 02:20:27

回答

0

原來的排序規則設置爲utf8-unicode-ci而不是utf8-general-ci。修復它,它現在可以工作。

1

的問題是,在源和目標字段需要在每一個方面是相同的。例如,如果源字段關閉「無符號」,並且目標具有「未簽名」,則會出現此錯誤。

相關問題