PHP - Cannot delete or update a parent row: a foreign key constraint fails

   
Vista:

Cannot delete or update a parent row: a foreign key constraint fails

Publicado por Gabriel (5 intervenciones) el 26/06/2016 03:07:12
Hola gente del foro, Bueno la cursada de la facultad del seminario de PHP es un desastre, no explican ni la mitad de las cosas, es como aprender por uno mismo en internet, de hecho asi llevo hecho casi el 75% de un proyecto que tengo que entregar el 1.
Ahora me encontre con un problema que no puedo resolver, ni buscando por todos lados, dado que todavia no curse Base de Datos.
Tengo que eliminar una categoria de un producto, el cual es una clave foranea. y me tira el error:

Cannot delete or update a parent row: a foreign key constraint fails (`grupo36`.`productos`, CONSTRAINT `productos_ibfk_1` FOREIGN KEY (`idCategoriaProducto`) REFERENCES `categorias_productos` (`idCategoriaProducto`))

Les dejo el modulo encargado de eliminar la categoria.

1
2
3
4
5
6
7
8
9
10
/**
 * Elimina la categoria pasada por parametro de la BD
 * @param $categoria
 */
function eliminarCategoria($categoria){
    $connect = conectar();
    $query = "DELETE FROM categorias_productos WHERE idCategoriaProducto='$categoria'";
    mysqli_query($connect,$query)  or die(mysqli_error($connect));
    mysqli_close($connect);
}

Tables_in_grupo36
categorias_productos
productos
usuarios


idCategoriaProducto nombre
1 hogar
2 electronica
3 deportes
4 electricidad

Desde ya muchísimas gracias!!!!


Si no lo que se me acaba de ocurrir es si me permite eliminar todos los registros de los productos con dicha clave foranea con un
1
2
3
4
5
6
7
8
9
$query = "SELECT * FROM categorias_productos WHERE idCategoriaProducto = '$idCategoria'";
$borrar = "DELETE FROM productos WHERE idCategoriaProducto = '$idCate'";
$result = mysqli_query($connect,$query);
while ($row = mysqli_fetch_assco($result)){
$idCate = $row['idCategoriaProducto'];
mysqli_query($connect,$borrar);
}
//AHORA SI BORRAR EL FOREIGN KEY
mysqli_query($connect,"DELETE FROM categorias_productos WHERE idCategoriaProducto = '$idCategoria'");



Esa seria la forma de eliminar la foreign key sin saltear ningun nivel de seguridad en la BD?
Mil gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de kip

Cannot delete or update a parent row: a foreign key constraint fails

Publicado por kip (563 intervenciones) el 26/06/2016 04:17:44
Hola podrias intentar de esta forma:

1
$query = "ALTER TABLE tu_tabla DROP FOREIGN KEY 'nombre_del_constraint'";

Cuentanos si te fue bien

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Cannot delete or update a parent row: a foreign key constraint fails

Publicado por Gabriel (5 intervenciones) el 27/06/2016 00:19:43
Mil gracias, si ya había probado ese comando pero de todas formas no me dejaba. Termine solucionando el problema, validando con javascript un cartel de confirmación informando que se borraran todos los productos relacionados a esa categoría si se continua, y al enviar el formulario, elimino los productos y luego la categoría.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar