Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

[ERROR] por que?

Estas en el tema de [ERROR] por que? en el foro de Bases de Datos General en Foros del Web. Hola a todos, estoy intentando insertar un registro en una tabla, pero me da el siguiente error: Cannot add or update a child row: a ...
  #1 (permalink)  
Antiguo 22/12/2004, 04:59
 
Fecha de Ingreso: mayo-2004
Mensajes: 101
Antigüedad: 20 años
Puntos: 0
[ERROR] por que?

Hola a todos,

estoy intentando insertar un registro en una tabla, pero me da el siguiente error:
Cannot add or update a child row: a foreign key constraint
¿a que puede ser debido?

Mi código es el siguiente en php es:
$respuesta = mysql_query("INSERT INTO is_foto_oficina (IDOFICINA,NOMBRE) VALUES ('".$_POST["id"]."','".$_POST["new_name"]."')", $db);
Estructura de la tabla:
CREATE TABLE `is_foto_oficina` (
`IDFOTO` int(11) unsigned NOT NULL auto_increment,
`IDOFICINA` int(3) unsigned NOT NULL default '0',
`NOMBRE` varchar(50) default NULL,
PRIMARY KEY (`IDFOTO`),
KEY `IDOFICINA` (`IDOFICINA`)
) TYPE=InnoDB AUTO_INCREMENT=1 ;
# Filtros para la tabla `is_foto_oficina`
ALTER TABLE `is_foto_oficina`
ADD CONSTRAINT `IDOFICINA` FOREIGN KEY (`IDOFICINA`) REFERENCES `is_oficina` (`IDOFICINA`) ON DELETE CASCADE ON UPDATE CASCADE;

CREATE TABLE `is_oficina` (
`IDOFICINA` int(3) unsigned NOT NULL auto_increment,
`OFICINA` varchar(20) NOT NULL default '',
) TYPE=InnoDB AUTO_INCREMENT=1 ;
  #2 (permalink)  
Antiguo 22/12/2004, 06:06
 
Fecha de Ingreso: diciembre-2002
Ubicación: Caracas D.F.
Mensajes: 144
Antigüedad: 21 años, 4 meses
Puntos: 0
Hola! creo que tu error esta Aquí...

$respuesta = mysql_query("INSERT INTO is_foto_oficina (IDOFICINA,NOMBRE) VALUES ('".$_POST["id"]."','".$_POST["new_name"]."')", $db);

mysql_db_query("INSERT INTO is_foto_oficina (IDOFICINA,NOMBRE) values ('$_POST["id"]','$_POST["new_name"]')", $db);
  #3 (permalink)  
Antiguo 22/12/2004, 06:26
 
Fecha de Ingreso: mayo-2004
Mensajes: 101
Antigüedad: 20 años
Puntos: 0
lo he probado (pese a que siempre que trabajo con BDD y PHP utilizo mysql_query), pero no da resultado.
Gracias.
  #4 (permalink)  
Antiguo 22/12/2004, 07:41
Avatar de Vice  
Fecha de Ingreso: agosto-2003
Mensajes: 613
Antigüedad: 20 años, 9 meses
Puntos: 2
Este mensaje de error (aunque no está completo) creo que es muy claro: estás intentando insertar una fila en is_foto_oficina con un valor para id_oficina que no existe en is_ficina.
Un saludo
__________________
Estoy contagiado de Generación-I
  #5 (permalink)  
Antiguo 28/12/2004, 01:50
 
Fecha de Ingreso: mayo-2004
Mensajes: 101
Antigüedad: 20 años
Puntos: 0
Ya Vice, pero sí que existe!
La consultaque hago a mi BDD es:
INSERT INTO is_foto_oficina (IDOFICINA,NOMBRE) VALUES ('93','is_12.jpg')
que no funciona si la programo con PHP, pero que si la lanzo directamente en el editor de SQL de MySql si funciona bien.
El valor de IDOFICINA=93 en is_oficina si existe, pues al generar el SQL de la tabla en los datos me apareceesto:
INSERT INTO `is_oficina` VALUES (93, 'Manual', '', 722, '@w', 2, '-', '-', 8, 1, 2, 3202, 1, NULL);

Se os ocurre alguna otra cosa?! gracias.
  #6 (permalink)  
Antiguo 28/12/2004, 02:17
Avatar de Vice  
Fecha de Ingreso: agosto-2003
Mensajes: 613
Antigüedad: 20 años, 9 meses
Puntos: 2
Pues con lo que dices no sé que decirte, sólo hacer pruebas hasta ver que es lo que pasa. Entre otras cosas, probaría a quitar las comillas por si tiene un problema con los tipos de datos (ya sé que parece absurdo, pero ...):
$respuesta = mysql_query("INSERT INTO is_foto_oficina (IDOFICINA,NOMBRE) VALUES (".$_POST["id"]."',".$_POST["new_name"]."')", $db);

Otra cosa es poner justo después de ejecutar el mysql_query() un "echo mysql_error()" para que te imprima por pantalla el mensaje de error por si te muestra otra cosa.
Supongo que ya hiciste que se muestre la cadena de la instruccion por pantalla antes de ejecutarla para comprobar que es correcta.
Fuera de esto, ahora mismo, no se me ocurren más cosas.
Un saludo.
__________________
Estoy contagiado de Generación-I
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:14.