Error 1452 mysql: Cannot add or update a Child Row

Asked

Viewed 2,284 times

1

I created the following tables and populated in 2 (user and type);

CREATE:

CREATE TABLE utilizador(utilizador_id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,username VARCHAR(100) NOT NULL, password VARCHAR(100) NOT NULL, morada VARCHAR(100) NOT NULL, email VARCHAR(100) NOT NULL, numero_cc INT NOT NULL);
CREATE TABLE produtos(id_produto INT NOT NULL PRIMARY KEY AUTO_INCREMENT,nome VARCHAR(100) NOT NULL, genero CHAR(1) NOT NULL, preco INT NOT NULL,id_tipo INT);
CREATE TABLE tipo(id_tipo INT NOT NULL PRIMARY KEY AUTO_INCREMENT,designacao VARCHAR(100) NOT NULL);
CREATE TABLE cart_produtos(id_produtos INT NOT NULL PRIMARY KEY AUTO_INCREMENT,quantidade INT,valor INT,id_cart INT);
CREATE TABLE cart_utilizador(id_cart INT NOT NULL PRIMARY KEY AUTO_INCREMENT,id_utilizador INT);
CREATE TABLE cart(id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,datas DATE NOT NULL);

ALTER TABLE cart_utilizador ADD CONSTRAINT id_utilizador_fk 
FOREIGN KEY (id_utilizador_fk) REFERENCES utilizador(utilizador_id);

ALTER TABLE cart_produtos ADD CONSTRAINT id_cart_fk 
FOREIGN KEY (id_cart) REFERENCES cart_utilizador(id_cart);

ALTER TABLE produtos ADD CONSTRAINT id_fk 
FOREIGN KEY (id_produto) REFERENCES cart_produtos(id_produtos);

ALTER TABLE cart_utilizador ADD CONSTRAINT id_cart_produtos_fk 
FOREIGN KEY (id_cart) REFERENCES cart_produtos(id_produtos);

ALTER TABLE produtos ADD CONSTRAINT id_tipo_fk 
FOREIGN KEY (id_tipo) REFERENCES tipo(id_tipo);

ALTER TABLE cart ADD CONSTRAINT id_cart_prime_fk 
FOREIGN KEY (id) REFERENCES cart_utilizador(id_cart);

POPULATE:

INSERT INTO utilizador(username,password,morada,email,numero_cc) VALUES("ricardinho","oscarpw","Rua dos Aliados","[email protected]",123349574);
INSERT INTO utilizador(username,password,morada,email,numero_cc) VALUES("blitzo","maidpw","Rua das Carrinhas","[email protected]",139845923);
INSERT INTO utilizador(username,password,morada,email,numero_cc) VALUES("ricstu","glamorpw","Rua dos Aliados","[email protected]",188957923);
INSERT INTO utilizador(username,password,morada,email,numero_cc) VALUES("jacintosr","jckoneilpw","Avenida das Ameijoas","[email protected]",123349574);
INSERT INTO tipo(designacao) VALUES("calca");

INSERT INTO tipo(designacao) VALUES("chapeu");

INSERT INTO tipo(designacao) VALUES("camisola");

When I populate the products table with this script:

INSERT INTO produtos(nome,genero,preco,id_tipo) VALUES("calca preta com riscas","M",18,1);

I get the error (Error Code: 1452. Cannot add or update a Child Row: a Foreign key Constraint fails (loja.produtos, CONSTRAINT id_fk FOREIGN KEY (id_produto) REFERENCES cart_produtos (id_produtos)) )

How do I fix this?

1 answer

1


The problem is here:

ALTER TABLE produtos ADD CONSTRAINT id_fk 
FOREIGN KEY (id_produto) REFERENCES cart_produtos(id_produtos);

With this to create a product record, you need to use an existing product id_in cart_products.

  • So to solve this I have to eliminate the relationship and populate first and then make this script? @karran

  • what I believe you want is ALTER TABLE cart_produtos ADD CONSTRAINT id_fk 
FOREIGN KEY (id_produtos) REFERENCES produtos(id_produto);

  • in which case you would have to remove the old relation and add this new one, maybe there are more problems, @fabimetabi

  • has reason makes more sense the relationship this way, tomorrow I will test thank you!

  • Thank you, if all goes well please then mark my reply as a solution

Browser other questions tagged

You are not signed in. Login or sign up in order to post.