一课程表,里面只有一个字段“课程名”
还有一课程老师关系表,有“教工号”,“课程名”两个字段
想设课程老师关系表中的“课程名”为外键但是弹出错误信息:
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)请教是什么出问题了,小弟感激不尽

解决方案 »

  1.   

    提供一下你的
    show create table 课程表;
    show create table 课程老师关系表;还有你的修改用的语句。
      

  2.   

    这个是课程表的
    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里面操作的不是用代码写的
    请问要将这两个表建立外键怎么做?谢谢
      

  3.   

    用语句建立吧:
    alter table tb_te_cour add constraint FOREIGN KEY(coursename) REFERENCES tb_courses (coursename) ON DELETE CASCADE ON UPDATE CASCADE
      

  4.   

    mysql创建外键要求比较严格,严格到有时候你找不到到底哪里错了。       1.检查你的表是不是都是(主表和副表都必须是)INNodb类型的,只有这种类型才可以创建外键。
           2.检查字段名是不是有错误。
           3.检查字段类型,最好一样。
           4.比较隐蔽,检查字符集,为了迁移和使用的方便,尽量使用UTF8
           5.上面的都检查了?那么我估计你的在创建久表的时候用的字符集与新表不同,如果我的新表用的字符集是UTF8,那么即使你把数据库的这些字符集全部设置 成UTF8你的久表字段字符集依然不会改变(要是你有特殊限定的话),那就需要你对久表的所有字段进行字符集的更
      

  5.   

    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;
      

  6.   

    建立表的时候可以这样
    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;