4
respuestas

ERROR 1452: Cannot add or update a child row: a foreign key constraint fails

No puedo avanzar en el curso. Obtengo el error Error Code: 1452. Cannot add or update a child row: a foreign key constraint fails (ventas_jugos.tb_items_facturas1, CONSTRAINT FK_FACTURA1 FOREIGN KEY (NUMERO) REFERENCES tb_factura (NUMERO))

Este es el código mío

CREATE TABLE tb_facturacion(
FECHA DATE NULL,
VENTA_TOTAL FLOAT
);

SELECT * FROM tb_facturacion;

CREATE TABLE `tb_factura1` (
  `NUMERO` varchar(5) NOT NULL,
  `FECHA` date DEFAULT NULL,
  `DNI` varchar(11) NOT NULL,
  `MATRICULA` varchar(5) NOT NULL,
  `IMPUESTO` float DEFAULT NULL,
  PRIMARY KEY (`NUMERO`),
  KEY `FK_CLIENTE1` (`DNI`),
  KEY `FK_VENDEDOR1` (`MATRICULA`),
  CONSTRAINT `FK_CLIENTE1` FOREIGN KEY (`DNI`) REFERENCES `tb_clientes` (`DNI`),
  CONSTRAINT `FK_VENDEDOR1` FOREIGN KEY (`MATRICULA`) REFERENCES `tb_vendedor` (`MATRICULA`)
);
CREATE TABLE `tb_items_facturas1` (
  `NUMERO` varchar(5) NOT NULL,
  `CODIGO` varchar(10) NOT NULL,
  `CANTIDAD` int DEFAULT NULL,
  `PRECIO` float DEFAULT NULL,
  PRIMARY KEY (`NUMERO`,`CODIGO`),
  KEY `FK_PRODUCTO1` (`CODIGO`),
  CONSTRAINT `FK_FACTURA1` FOREIGN KEY (`NUMERO`) REFERENCES `tb_factura` (`NUMERO`),
  CONSTRAINT `FK_FACTURAS1` FOREIGN KEY (`NUMERO`) REFERENCES `tb_facturas_gral` (`NUMERO`),
  CONSTRAINT `FK_PRODUCTO1` FOREIGN KEY (`CODIGO`) REFERENCES `tb_productos` (`CODIGO`)
);

SELECT * FROM tb_clientes;
SELECT * FROM tb_vendedor;
SELECT * FROM tb_factura1;
SELECT * FROM tb_productos;

INSERT INTO `ventas_jugos`.`tb_factura1`
(`NUMERO`,
`FECHA`,
`DNI`,
`MATRICULA`,
`IMPUESTO`)
VALUES
('0100',
'2021-01-01',
'1471156710',
'235',
0.1);

INSERT INTO tb_items_facturas1
VALUES('0100', '1002767', 100, 25),
('0100', '1004327', 200, 25),
('0100', '1013793', 300, 25);
4 respuestas

Hola Stefania. El error está porque al crear la tabla tb_items_facturas1 la FOREIN KEY está apuntando a tb_factura cuando en realidad debería decir tb_factura1 ya que en esta tabla es donde insertas la factura '0100'. Puedes solucionarlo eliminando la tabla con DROP TABLE tb_items_facturas1; y volverla a crear corregida. Saludos!

Está igual que lo hecho por el instructor tanto en el vídeo como en esto https://app.aluracursos.com/course/comandos-dml-manipulacion-datos-mysql/task/76606

Además, aún con ese cambio seguía dando error pero porque estaba vacía

De todas maneras, las tablas tb_facturas como tb_items_facturas no se cargaron en ningún momento del curso ni siquiera en las tareas que dan ellos. Por eso daba error.

A lo que voy es que debe aclarar desde el minuto uno que las tablas deben estar llenas antes de hacer cualquier operatoria.

Revisando en los foros de internet recomiendan esto:

*"...tuve el mismo error y lo pude corregir con...

SET FOREIGNKEYCHECKS=0;

tambien puedes usar...

SET GLOBAL FOREIGNKEYCHECKS=0;

pero es mas seguro la pirmera opcion ya que solo esta activo mientras dura la sesion

Fuentes: ERROR 1452: Cannot add or update a child row: a foreign key constraint fails..."*

me funcionó el primero y ya pude insertar los datos en la tabla.

hola buenas tardes yo me tome el trabajo de borrar varias veces la tabla y volverla a crear para despues insetar los datos y la combinacion que me funciono fue esta CREATE TABLE tb_items_facturas1 ( NUMERO varchar(5) NOT NULL, CODIGO varchar(10) NOT NULL, CANTIDAD int DEFAULT NULL, PRECIO float DEFAULT NULL, PRIMARY KEY (NUMERO,CODIGO), KEY FK_PRODUCTO1 (CODIGO), CONSTRAINT FK_FACTURA1 FOREIGN KEY (NUMERO) REFERENCES tb_factura1 (NUMERO), CONSTRAINT FK_PRODUCTO1 FOREIGN KEY (CODIGO) REFERENCES tb_producto (CODIGO) ); de ahi inserte los datos y funciono espero que te sirva