建立外键问题

xjlong555 2009-10-11 10:01:11
一课程表,里面只有一个字段“课程名”
还有一课程老师关系表,有“教工号”,“课程名”两个字段
想设课程老师关系表中的“课程名”为外键

但是弹出错误信息:
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)

请教是什么出问题了,小弟感激不尽
...全文
113 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
xjlong555 2009-10-16
  • 打赏
  • 举报
回复
问题解决了,就是像楼上说的,表里有数据了才建立外键引起的,谢谢大家啦
vinsonshen 2009-10-13
  • 打赏
  • 举报
回复
估计他这个不是建表的问题,而是表里面有数据了,然后再在表上面建立外键引起的。
ASDFGHJKL987 2009-10-13
  • 打赏
  • 举报
回复
建立表的时候可以这样
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;
vinsonshen 2009-10-12
  • 打赏
  • 举报
回复
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)


--------------------
像你这个错误,应该是表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;
storyxsj 2009-10-12
  • 打赏
  • 举报
回复
mysql创建外键要求比较严格,严格到有时候你找不到到底哪里错了。

1.检查你的表是不是都是(主表和副表都必须是)INNodb类型的,只有这种类型才可以创建外键。
2.检查字段名是不是有错误。
3.检查字段类型,最好一样。
4.比较隐蔽,检查字符集,为了迁移和使用的方便,尽量使用UTF8
5.上面的都检查了?那么我估计你的在创建久表的时候用的字符集与新表不同,如果我的新表用的字符集是UTF8,那么即使你把数据库的这些字符集全部设置 成UTF8你的久表字段字符集依然不会改变(要是你有特殊限定的话),那就需要你对久表的所有字段进行字符集的更
vinsonshen 2009-10-12
  • 打赏
  • 举报
回复
用语句建立吧:
alter table tb_te_cour add constraint FOREIGN KEY(coursename) REFERENCES tb_courses (coursename) ON DELETE CASCADE ON UPDATE CASCADE
xjlong555 2009-10-12
  • 打赏
  • 举报
回复
这个是课程表的
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里面操作的不是用代码写的
请问要将这两个表建立外键怎么做?谢谢
ACMAIN_CHM 2009-10-11
  • 打赏
  • 举报
回复
提供一下你的
show create table 课程表;
show create table 课程老师关系表;

还有你的修改用的语句。
nianzhang747 2009-10-11
  • 打赏
  • 举报
回复
课程表设置成健

并且两天关联字段一致 包括长度类型

56,679

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧