情景描述:
做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表结构:
对应外键约束: