一课程表,里面只有一个字段“课程名”
还有一课程老师关系表,有“教工号”,“课程名”两个字段
想设课程老师关系表中的“课程名”为外键但是弹出错误信息:
1452-Cannot add or update a child row:a foreign key constraint fails('db_teacher/#sql-b1c_15',CONSTRAINT 'fk_co' FOREIGN KEY('coursename')REFERENCES 'tb_courses' (coursename) ON DELETE CASCADE ON UPDATE CASCADE)请教是什么出问题了,小弟感激不尽
还有一课程老师关系表,有“教工号”,“课程名”两个字段
想设课程老师关系表中的“课程名”为外键但是弹出错误信息:
1452-Cannot add or update a child row:a foreign key constraint fails('db_teacher/#sql-b1c_15',CONSTRAINT 'fk_co' FOREIGN KEY('coursename')REFERENCES 'tb_courses' (coursename) ON DELETE CASCADE ON UPDATE CASCADE)请教是什么出问题了,小弟感激不尽
show create table 课程表;
show create table 课程老师关系表;还有你的修改用的语句。
create table tb_courses
(
coursename varchar(50) not null,
primary key (coursename)
);
这个是老师与课程的关系表
create table tb_te_cour
(
tnumber int(50),
coursename varchar(50),
teachername varchar(50)
);
这两个是创建表的,建立索引和外键的我是直接在MYSQL里面操作的不是用代码写的
请问要将这两个表建立外键怎么做?谢谢
alter table tb_te_cour add constraint FOREIGN KEY(coursename) REFERENCES tb_courses (coursename) ON DELETE CASCADE ON UPDATE CASCADE
2.检查字段名是不是有错误。
3.检查字段类型,最好一样。
4.比较隐蔽,检查字符集,为了迁移和使用的方便,尽量使用UTF8
5.上面的都检查了?那么我估计你的在创建久表的时候用的字符集与新表不同,如果我的新表用的字符集是UTF8,那么即使你把数据库的这些字符集全部设置 成UTF8你的久表字段字符集依然不会改变(要是你有特殊限定的话),那就需要你对久表的所有字段进行字符集的更
--------------------
像你这个错误,应该是表tb_te_cour ('coursename')的记录在表'tb_courses' (coursename)里没有对应记录造成的,检查下:select a.* from tb_te_cour a left join tb_courses b on a.coursename=b.coursename where b.coursename is null;
create table tb_te_cour(
tnumber int(50),
coursename varchar(50),
teachername varchar(50),
FOREIGN KEY(coursename) REFERENCES tb_courses (coursename) ON DELETE CASCADE ON UPDATE CASCADE
)engine=innodb;