2012-02-28 106 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

的问题是,在源和目标字段需要在每一个方面是相同的。例如,如果源字段关闭“无符号”,并且目标具有“未签名”,则会出现此错误。

相关问题