2015-05-09 97 views
0

請幫忙 我很喜歡這個,我不知道該怎麼把外鍵 如果有人可以幫助,我會很感激!MySQL - 無法添加外鍵約束

mysql> 
    create table Evento 
    (idEven int NOT NULL auto_increment, 
    denominacion varchar(20), 
    horaInicio time, 
    idLugar int, 
    cupo int, 

    constraint PK_Evento primary key (idEven)); 

Query OK, 0 rows affected 

mysql> 
    create table Lugar 
    (idLugar int NOT NULL, 
    nombre varchar(20), 
    direccion varchar(20), 
    localidad varchar(20), 

    constraint PK_Lugar primary key (idLugar), 
    constraint FK_Lugar foreign key (idLugar) references Evento(idLugar)); 

ERROR 1215 (HY000): Cannot add foreign key constraint

回答

1

它看起來像你想從event外鍵引用place

也就是說,它看起來像一個「事件」發生在一個地方,但一個地方可以有很多「事件」。爲了在「事件」表中表示,我們引用事件發生的「地點」。你已經有了專欄。

只需切換你的想法......外鍵在子表上定義,並引用父表。事件表中的idLugar列是對Lugar中的一行的引用。

只需從Lugar表中刪除該第二個外鍵約束,而將約束添加到Evento表。

例如:

ALTER TABLE `Evento` ADD 
    CONSTRAINT FK_Evento_Lugar FOREIGN KEY (idLugar) REFERENCES Lugar(idLugar) 

注意:謹防大小寫敏感的問題與表名。我們採取的避免問題的模式是小寫所有表名,並在my.cnf中設置lower_case_table_names=1

參考:https://dev.mysql.com/doc/refman/5.5/en/identifier-case-sensitivity.html