无法将外键添加到表中

时间:2013-09-30 11:25:34

标签: mysql

我有一个问题是将外键添加到现有表中,我总是收到错误

ERROR 1005(HY000): Can't create table '#sql-a1f-b84' (errno: 150)

我试过

ALTER TABLE alliances ADD CONSTRAINT fk_alliance_id FOREIGN KEY (alliance_id) references alliances(id);

当我做DESCRIBE alliances;

Field  Type    Null   Key  Default  Extra
id     int(11) NO     PRI  NULL     auto_increment
name   bigint(2) YES       NULL      

当我做DESCRIBE alliance_invitation;

Field        Type    Null   Key  Default  Extra
id           int(11) NO     PRI  NULL     auto_increment
alliance_id  int(11) NO             

谁能告诉我什么是问题?

2 个答案:

答案 0 :(得分:3)

您需要在FK专栏CREATE INDEX上先alliance_id。 Mysql需要一个预先存在的索引才能在其上添加约束。

答案 1 :(得分:1)

试试这个:

ALTER TABLE `alliance_invitation` ADD INDEX ( `alliance_id` );
ALTER TABLE `alliance_invitation` ADD FOREIGN KEY ( `alliance_id` ) 
REFERENCES `alliances` ( `id` ) ON DELETE CASCADE ON UPDATE CASCADE;

您可以将CASCADE更改为其他任何内容。更多信息here