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 に答える