--我看PHP & MySQL实例精解 这本书上有论谈这篇.--看看他的贴子表结构create table wrox_forum_message(
 message_id bigint unsigned not null auto_increment,
 parent_message_id bigint unsigned not null,
 forum_id int unsigned not null,
 subject varchar(100) not null,
 message_text text not null, primary key(message_id),
 foreign key (parent_message_id) references wrox_forum_message(message_id), --跪议的外键
 foreign key (forum_id) references wrox_forum(forum_id),
 foreign key (user_id) references  wrox_users(user_id)
);--问题就在 parent_message_id上,这个自身表引用自身的主键做为外键。
--可是那个老外作者都出书了,书是还解释了特别说明: wrox_forum_message 中中parent_message_id
--引用来实现贴子组织,当 parent_message_id 为0表示 原始贴,否则就为回复的贴子问题时,我根本添加不进去数据,因为 parent_message_id 是外键,必须要一个存在的主键才可以
就好像就是鸡与蛋的关系了。实在搞不懂那个老外作者是怎么写进入的,他的代码没错,写的没错
就是我调试的时候不得行,他书说起很正常的。我靠,这问题出在哪里呢?
添加时总会提示这个错误。纠结了很久没解决....
update database failed.Cannot add or update a child row: a foreign key constraint fails (`wrox_databases/wrox_forum_message`, CONSTRAINT `wrox_forum_message_ibfk_1` FOREIGN KEY (`PARENT_MESSAGE_ID`) REFERENCES `wrox_forum_message` (`MESSAGE_ID`))

解决方案 »

  1.   


     很回答者忽略这两个外键,在这个问题没有用到这两个.
     foreign key (forum_id) references wrox_forum(forum_id),
     foreign key (user_id) references  wrox_users(user_id)
    主要问题是
     foreign key (parent_message_id) references wrox_forum_message(message_id); 
    这样搞起以后,如何 才可以添加进数据而不会出现外键约束失败!!
      

  2.   

    虽然过了 关系数据库这门课,可是对于外键,在MYSQL上的应用,一直不太了解。
    等高人释疑。
      

  3.   

    在添加数据的时候parent_message_id/message_id设置了么(父id)么?
      

  4.   

    可以不指定parent_message_id那列吧,或者传入NULL,而不是填入0值。至于书上那个表,我猜是用MyISAM引擎建的,MyISAM引擎貌似完全忽略外键约束,自然就不出错了。
    InnoDB引擎才会检查外键