[DB]添加外键约束出现错误的可能情况

情景描述:

做WEB应用的时候用到hibernate,要使用MyEclipse自动生成hibernate的持久化对象PO(POJO及映射文件),需要给字段加外键约束才能生成更好使用的PO。

于是重新修改数据库,添加外键约束,总报错,使用的是MySql。

解决办法:

可能出错原因:

1.数据库已有数据不符合外键约束(数据的一致性)。所修改的数据库中的已有记录中,存在这样的记录: 待加外键约束的数据库表的字段值为NULL(仅当为NO ACTION时候可以为NULL) 或 对应的引用表的记录不存在。

例如:contact表存在一条记录的user_id为10,而在user_info表中没有id为10的记录。

2.外键名称冲突。 每张表的外键名和其他表的外键名不可以重复。

例如:contact表中存在外键user_id_FK,同时contact_group表中也存在外键user_id_FK就会报错。

3.外键重设时需要同时删除索引并保存后,重新加外键。

附:

contact表结构:

捕获

对应外键约束:

捕获

posted @ 2013-01-01 21:42  wanpp590  阅读(641)  评论(0编辑  收藏  举报