gpt4 book ai didi

Mysql无法添加外键

转载 作者:行者123 更新时间:2023-11-29 11:53:59 25 4
gpt4 key购买 nike

我有一个研究案例,必须创建三个表。创建语句如下。

create table COMMUNITY(
c_id varchar(10) primary key,
name varchar(30) not null,
longitude float,
latitude float,
post_code varchar(15) not null,
key(c_id))

create table UNIT(
c_id varchar(10) not null,
u_id int not null,
name varchar(20) not null,
key(c_id, u_id),
primary key(c_id, u_id),
constraint unique(c_id, u_id),
constraint FK_UNIT foreign key(c_id) references COMMUNITY(c_id)
on delete cascade on update cascade)



create table ROOM(
r_id int not null,
u_id int not null,
c_id varchar(10) not null,
name varchar(20),
primary key(c_id, u_id, r_id),
constraint FK_ROOM_UID foreign key(u_id) references UNIT(u_id)
on delete cascade on update cascade,
constraint FK_ROOM_CID foreign key(c_id) references UNIT(c_id)
on delete cascade on update cascade)

社区和单位表已成功创建,但是当我尝试创建房间时,mysql给出错误代码:1215。无法添加外键约束
我想知道这里发生了什么以及如何创建它们? (我知道 InnoDB 可以解决这个问题,但是还有其他方法可以做到吗?)

谢谢

最佳答案

这看起来像是您所看到的实际错误的罪魁祸首:

constraint FK_ROOM_UID foreign key(u_id) references UNIT(u_id) 
constraint FK_ROOM_UID foreign key(c_id) references UNIT(c_id)

应该是:

constraint FK_ROOM_UID foreign key(c_id, u_id) references UNIT(c_id, u_id)

引用UNIT表中的双列键

您还需要使用 InnoDB 来实际创建外键索引,因此:

CREATE TABLE UNIT(
....
) ENGINE=InnoDB;

关于Mysql无法添加外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33535258/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com