[英]cannot add foreign key constraint
ERROR MESSAGE: #1215 - Cannot add foreign key constraint错误消息:#1215 - 无法添加外键约束
hello i can't create table foreign key... how to do this... i have two table.. the first table got two primary key then the 2nd table is 1 primary key... the first table is courseid varchar(5)
and courseyear int
and the second is subj_id varchar(5)
你好,我无法创建表外键......如何做到这一点......我有两个表......第一个表有两个主键然后第二个表是1个主键......第一个表是courseid varchar(5)
和courseyear int
第二个是subj_id varchar(5)
create table studentload(
student_id varchar(11) not null,
courseid varchar(5) not null,
courseyear int not null,
subj_id varchar(5) not null,
foreign key (courseid,courseyear) references course(courseid,courseyear),
foreign key (subj_id) references subject(subj_id)
)
EDIT编辑
this is all table that I inserted already这是我已经插入的所有表格
CREATE TABLE IF NOT EXISTS `course` (
`courseid` varchar(5) NOT NULL,
`courseyear` int(11) NOT NULL,
`coursedesc` varchar(50),
`subj_id` varchar(5) NOT NULL,
PRIMARY KEY (`courseid`,`courseyear`)
)
CREATE TABLE IF NOT EXISTS `subject` (
`subj_id` varchar(5) NOT NULL,
`subj_name` varchar(50) NOT NULL,
`courseid` varchar(5),
`courseyear` int(11),
foreign key (`courseid`,`courseyear`) references `courseid` (`courseid`,`courseyear`)
)
Here it is sample SQLFiddle这是示例SQLFiddle
You have mandatory to add primary key (subj_id)
in your studentload
table您必须在studentload
表中添加primary key (subj_id)
In your foriegn relationship courseid is not tablename.在您的外国关系中,courseid 不是表名。 It should be它应该是
"references course(courseid,courseyear)"
Like像
CREATE TABLE IF NOT EXISTS `course` (
`courseid` varchar(5) NOT NULL,
`courseyear` int(11) NOT NULL,
`coursedesc` varchar(50),
`subj_id` varchar(5) NOT NULL,
PRIMARY KEY (`courseid`,`courseyear`)
);
CREATE TABLE IF NOT EXISTS `subject` (
`subj_id` varchar(5) NOT NULL,
`subj_name` varchar(50) NOT NULL,
`courseid` varchar(5),
`courseyear` int(11),
foreign key (`courseid`,`courseyear`) references `course` (`courseid`,`courseyear`),
primary key (`subj_id`)
);
create table studentload(
student_id varchar(11) not null,
courseid varchar(5) not null,
courseyear int not null,
subj_id varchar(5) not null,
foreign key (courseid,courseyear) references course(courseid,courseyear),
foreign key (subj_id) references subject(subj_id)
);
You have used "references courseid
( courseid
, courseyear
) ".您已经使用了“参考courseid
( courseid
, courseyear
) ”。 courseid is not your tablename. courseid 不是您的表名。 It should be "references course
( courseid
, courseyear
) "它应该是“参考course
( courseid
, courseyear
) ”
Sometime it is due to the order of the table creations.有时是由于表创建的顺序。 Make sure you create the non-foreign key tables first.确保首先创建非外键表。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.