Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Erro ao adicionar FOREIGN KEY

Tentei adicionar foreign key em compras, mas apareceu um erro:

mysql> alter table compras add foreign key(comprador_id) references compradores(id); ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (controle_compras.#sql-1bd8_14, CONSTRAINT #sql-1bd8_14_ibfk_1 FOREIGN KEY (comprador_id) REFERENCES compradores (id))

Qual a solução?

2 respostas
solução!

Este erro ocorre porque você está tentando add/update a uma linha para controle_compras que não tem um valor válido para o campo comprador_id baseado nos valores guardados nesse momento em compradores.

Não sei se é indicado, mas já vi que quando isso ocorre você pode tentar desabilitar esse check:

SET FOREIGN_KEY_CHECKS=0

Após resolver habilite novamente:

SET FOREIGN_KEY_CHECKS=1

Obrigado Ian,

Realmente. Verifiquei novamente a minha tabela. Havia criado 3 compradores. Distribuí os compradores através da tabela, mas faltou preencher uma linha que ficou com o valor 0 (zero). Assim, como é exigência da foreign key impedir edição (update) daquele valor específico pela própria tabela, era preciso que todos os valores estivessem coincidindo com os valores exigidos pela foreign key.