在mysql中添加外键和引用键时出错

时间:2016-02-14 03:48:05

标签: mysql database foreign-keys primary-key

我有两张表PlanePlaneType

 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完美无缺,第二个没有。两者都是对主键的引用,这是我能想到的唯一问题。我是一个mysql菜鸟,所以它可能是非常明显的。

提前感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

试试此SHOW ENGINE INNODB STATUS并查找LATEST FOREIGN KEY ERROR以获取具体错误。

但我确实认为这是索引的问题。您的主键由Maker和Model组成。在Model上创建索引,将创建FK。