Cannot delete or update a parent row: a foreign key constraint fails,出现这个报错的原因是:想要删除的数据或表与其他数据或表拥有主外键关系,Mysql规定,为了维护表结构的稳定,禁止执行该操作,即外键约束失败
解决方法:
在sql数据库里面时:
SET foreign_key_checks = 0; // 先设置外键约束检查关闭
drop table table1;
detele from table where ;
// 删除表或数据
SET foreign_key_checks = 1; // 开启外键约束检查,以保持表结构完整性
在实现方法里面时
// 由id删除对象
@Override
public void deleteById(Integer id) {
QueryRunner qr = new QueryRunner(DataSourceUtils.getDataSource());
try {
// 1.解除外键关联
qr.update("SET foreign_key_checks = 0");
// 2.执行删除语句
qr.update("delete from tb_user where id = ?",id);
// 3.重新关联外键
qr.update("SET foreign_key_checks = 1");
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException("由id删除对象失败",e);
}
}