Cannot add or update a child row: a foreign key constraint fails (xiaonei/photo1
, CONSTRAINT FKC50C883FA1694277
FOREIGN KEY (albumId
) REFERENCES album
(id
))
public ActionForward oneAlbumUI(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
// TODO Auto-generated method stub
//System.out.println("oneAlbumUI...");
//这里,我们要完成把图片上传到服务器,并保存记录到Photo对象
//先考虑用户上传一张图片的情况
AlbumForm albumForm = (AlbumForm) form;
Admin admin = (Admin) request.getSession().getAttribute("admin");
//Users loginUser = (Users) request.getSession().getAttribute("loginuser");
FormFile photo1 = albumForm.getPhoto1();
if(!"".equals(photo1.getFileName())){
//说明用户上传了第一张图片
//把图片上传上去
//再把信息保存到数据库
String newFileName = MyTools.uploadPhoto(request, photo1, admin.getId()+"", albumForm.getId());
Photo1 myPhoto1 = new Photo1();
myPhoto1.setIndate(new Date());
myPhoto1.setAlbum((Album) albumService1.findById(Album.class, Integer.valueOf(albumForm.getId()))); //该图片属于哪个相册
myPhoto1.setPhoto(newFileName);
//这句话就是把信息保存到数据库
albumService1.save(myPhoto1);
}
}
我在上一页面上调用Action保存了Album的信息,然后跳转到一下个页面调用Action保存Photo信息,但是报错,这是为什么?
album是photo表的父表吧,应该是父表中的记录没有保存到,所以字表关联到那条记录的时候就出错了
异常是:不能添加或更新一个孩子行:外键约束失败(校内网/图1,约束FKC50C883FA1694277外键(albumId)引用专辑(id));
这样 就应该很好找错误了,外键约束失败,
如果帮到你,请采纳 谢谢!
是因为你定义了外键,看下你的外键对应的id是不是不存在,或者有唯一性的要求
myPhoto1.setAlbum((Album) albumService1.findById(Album.class, Integer.valueOf(albumForm.getId()))); //该图片属于哪个相册
从这段代码可知你的表有主子表关系,从异常信息来看,应该是图片还没有上传成功,导致albumForm.getId()获取不到,更新子表photo主外键引用约束错误。
先在页面稍微控制一下,只有当图片上传成功后才能跳转到一下个页面调用Action保存Photo信息。