Cannot delete or update a parent row: a foreign key constraint fails(解决外键关联无法删除)

原因 :

关联生成的强制约束问题,在删除的时候回检查表之间的关联关系,从而导致无法删除。
如果强行删除表,就会报错。

解决:

  1. 关闭外键约束,
  2. 执行删除操作,
  3. 然后再开启外键约束

示例代码:

@Override
    public void deleteById(int 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("删除失败!", e);
        }
    }

你可能感兴趣的:(Java学习,MySQL,java,数据库,mysql)