2015-05-09 193 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