我有两张表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
完美无缺,第二个没有。两者都是对主键的引用,这是我能想到的唯一问题。我是一个mysql菜鸟,所以它可能是非常明显的。
提前感谢任何帮助。
答案 0 :(得分:1)
试试此SHOW ENGINE INNODB STATUS
并查找LATEST FOREIGN KEY ERROR
以获取具体错误。
但我确实认为这是索引的问题。您的主键由Maker和Model组成。在Model上创建索引,将创建FK。