使用Navicat for mysql设置外键时,保存时出现如下错误:1452-Cannot add or update a child row:a foreign key constraint fails('ontotree/#sql-7e0-f',CONSTRAINT 'speciesID' FOREIGN KEY ('SpeciesID' REFERENCES) 'speciesinfo'('DI'))数据类型和字段长度都一样,不知道是什么原因导致的?

解决方案 »

  1.   

    表引擎是否是INNODB,检查子表记录是否有问题
      

  2.   

    在命令行下用SQL命令来操作试试。
      

  3.   


    推荐使用mysql workbench 吧!
      

  4.   

    创建外键的前提:
    1:参照表的字段是否存在.
    2:组成外键字段要求被索引,外键字段在其他表上是主键.
    3:都为innodb表.
    4:字段类型一样.
    5:语法正确.
      

  5.   

    贴出两个表的 show create table 语句以供分析。
    估计是参考的列上没有创建索引。
      

  6.   

    这是因为表设置了外键约束,而你试图插入一条外键字段所在表纪录不存在的一个值.就会报1452错.
    比如a,b两表,a表外键id值来自b表的ID,当你在a表中插入一条纪录时,id字段用了不在b表id值范围内的值,就会报此错. 
      

  7.   

    我出现同楼主一样的问题,新手刚在学什么都不懂,纠结了好久,google到了这里,看@huabing84这个终于解决了,谢谢楼主!谢谢@huabing84!