MySQL - 无法添加外键约束
MySQL - Cannot add foreign key constraint
请帮忙
我对此很菜鸟,我不知道应该如何放置外键
如果有人能提供帮助,我将不胜感激!
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
您似乎需要来自 event
的外键来引用 place
。
也就是说,看起来像一个"event"发生在一个地方,但一个地方可以有多个"events"。为了在 "event" table 中表示,我们引用事件发生的 "place"。你已经在那里找到了专栏。
只要换个思路...外键在子 table 上定义,并引用父。事件 table 中的 idLugar
列引用了 Lugar
.
中的一行
只需从 Lugar
table 中删除第二个外键约束,然后将约束添加到 Evento
table.
例如:
ALTER TABLE `Evento` ADD
CONSTRAINT FK_Evento_Lugar FOREIGN KEY (idLugar) REFERENCES Lugar(idLugar)
注意:当心区分大小写 问题table 名称。我们采用的避免问题的模式是将所有 table 名称小写,并在 my.cnf.
中设置 lower_case_table_names=1
参考:https://dev.mysql.com/doc/refman/5.5/en/identifier-case-sensitivity.html
请帮忙 我对此很菜鸟,我不知道应该如何放置外键 如果有人能提供帮助,我将不胜感激!
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
您似乎需要来自 event
的外键来引用 place
。
也就是说,看起来像一个"event"发生在一个地方,但一个地方可以有多个"events"。为了在 "event" table 中表示,我们引用事件发生的 "place"。你已经在那里找到了专栏。
只要换个思路...外键在子 table 上定义,并引用父。事件 table 中的 idLugar
列引用了 Lugar
.
只需从 Lugar
table 中删除第二个外键约束,然后将约束添加到 Evento
table.
例如:
ALTER TABLE `Evento` ADD
CONSTRAINT FK_Evento_Lugar FOREIGN KEY (idLugar) REFERENCES Lugar(idLugar)
注意:当心区分大小写 问题table 名称。我们采用的避免问题的模式是将所有 table 名称小写,并在 my.cnf.
中设置lower_case_table_names=1
参考:https://dev.mysql.com/doc/refman/5.5/en/identifier-case-sensitivity.html