这个问题在这里已有答案:
我有两个表 Plane
和 PlaneType
.
CREATE TABLE Plane
(
ID INT,
Maker VARCHAR(30),
Model VARCHAR(30),
LastMaint VARCHAR(30),
LastMaintA VARCHAR(3),
PRIMARY KEY (ID)
) ENGINE = INNODB;
CREATE TABLE PlaneType (
Maker VARCHAR(30),
Model VARCHAR(30),
PRIMARY KEY (Maker, Model)
) ENGINE = INNODB;
插入这两个表后,我添加以下外键和主键:
ALTER TABLE Plane ADD FOREIGN KEY (Maker) REFERENCES PlaneType(Maker);
ALTER TABLE Plane ADD FOREIGN KEY (Model) REFERENCES PlaneType(Model);
第一个 ALTER
工作得很好,但第二个给了我错误:
ERROR 1005 (HY000): Can't create table '----.frm' (errno: 150)
我无法弄清楚为什么第一个 ALTER
完美地运作,而第二个't. Both are references to primary keys, and that'是我能想到的唯一问题 . 我是一个mysql noob,所以它可能是非常明显的东西 .
任何帮助表示赞赏,提前谢谢 .
1 回答
试试这个
SHOW ENGINE INNODB STATUS
并查找LATEST FOREIGN KEY ERROR
以获取特定错误 .但我确实认为这是索引的问题 . 您的主键由Maker和Model组成 . 在Model上创建索引,将创建FK .