3

我在将外键添加到现有表时遇到问题,总是出错

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             

谁能告诉我有什么问题?

4

2 回答 2

3

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

于 2013-09-30T11:33:28.527 回答
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 更改为其他任何内容。更多信息在这里

于 2013-09-30T11:46:03.997 回答