【发布时间】:2012-03-17 12:52:39
【问题描述】:
我知道关于这个错误有很多关于 SO 的问题,但即使应用我从中收集到的内容,我仍然得到“无法创建表 (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 也是独一无二的,所以我切换到那个。它不是主键。
我错过了什么?
【问题讨论】:
-
所有列都有相同的定义?奖学金和 sch_recommenders 是什么样的?
-
奖学金 id:INT 长度 3 sch_recommenders eid:VARCHAR 长度 10
-
你能同时显示奖学金和 sch_recommenders 表结构吗?
-
感谢您促使我进一步推动。我创建了没有外键约束的表。当我添加它们时,我得到了一个关于数据类型的特定错误。原来排序规则设置为 utf8-unicode-ci 而不是 utf8-general-ci。修复了它,现在可以使用了。
-
@user1236114 您可能会考虑“回答您自己的问题”并标记答案,这样以后来的任何人都不必通过 cmets 来找出问题
标签: mysql sql foreign-keys mysql-error-1005