我有一个问题是将外键添加到现有表中,我总是收到错误
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
谁能告诉我什么是问题?
答案 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