我有3个表格:CD
,Song
和Song_Details
这是CD
和Song
之间的关系。 create table Song(
ID int not null auto_increment,
Title varchar(255) not null,
Length float not null,
primary key (ID, Title)
);
create table CD(
Title varchar(255) not null,
CD_Number int not null,
primary key (Title, CD_Number)
);
Create table Song_Details(
CD_Title varchar(255) not null,
Song_Title varchar(255) not null,
Track_Number int not null,
primary key(CD_Title, Song_Title),
foreign key(CD_Title) references CD(Title),
foreign key(Song_Title) references Song(Title)
);
:
Song_Details
我设法在foreign key(Song_Title) references Song(Title)
中找到了这一行:
Error 1215(HY000): Cannot add foreign key constraint;
正在抛出{{1}}
根据我的表格,有没有人可以帮我看看,这可能导致这个问题?
答案 0 :(得分:0)
两件事。 auto_increment
密钥通常是外键。其次,您需要引用所有键定义为表的主键或唯一键(我不建议对非唯一键进行外键引用,尽管MySQL会全部执行这一点)。
所以:
create table Song (
Song_ID int not null auto_increment,
Title varchar(255) not null,
Length float not null,
primary key (ID),
unique (title)
);
create table CD (
CD_Id int auto_increment primary key,
Title varchar(255) not null,
CD_Number int not null,
unique (Title, CD_Number)
);
Create table Song_Details(
CD_ID varchar(255) not null,
Song_Id varchar(255) not null,
Track_Number int not null,
primary key(CD_ID, Song_ID),
foreign key(CD_ID) references CD(CD_ID),
foreign key(Song_ID) references Song(Song_ID)
);
注意: