RC
Erro de chave estrangeira ao cadastrar no banco
Fechado
Bom dia à toda a Comunidade Adianti!
Me deparei com um grave problema. Ao cadastrar um registro no banco, dispara um erro (ver imagem em anexo):
Error SQLSTATE[23000]: Integrity constraint violation: 1451 Cannot delete or update a parent row: a foreign key constraint fails (`elainelins`.`pagamento`, CONSTRAINT `pagamento_ibfk_2` FOREIGN KEY (`fatura_id`) REFERENCES `fatura` (`id`))
A tabela do banco está como a seguir:
Pagamento
Coluna Tipo Nulo Predefinido Ligações para Comentários MIME
id bigint(20) Não
data_pagamento date Sim NULL
valor_pago float Sim NULL
desconto float Sim NULL
observacao varchar(256) Sim NULL
forma_pagamento_id bigint(20) Sim NULL forma_pagamento -> id
fatura_id bigint(20) Sim NULL fatura -> id
Índices
Nome da chave Tipo Único Pacote Coluna Quantidade Agrupamento (Collation) Nulo Comentário
PRIMARY BTREE Sim Não id 1 A Não
forma_pagamento_id BTREE Não Não forma_pagamento_id 1 A Sim
fatura_id BTREE Não Não fatura_id 1 A Sim
forma_pagamento
Coluna Tipo Nulo Predefinido Comentários MIME
id bigint(20) Não
descricao varchar(256) Sim NULL
Índices
Nome da chave Tipo Único Pacote Coluna Quantidade Agrupamento (Collation) Nulo Comentário
PRIMARY BTREE Sim Não id 4 A Não
fatura
Coluna Tipo Nulo Predefinido Ligações para Comentários MIME
id bigint(20) Não
data_cadastro date Sim NULL
data_vencimento date Sim NULL
curso_id bigint(20) Sim NULL curso -> id
valor float Sim NULL
pago tinyint(1) Sim NULL
Índices
Nome da chave Tipo Único Pacote Coluna Quantidade Agrupamento (Collation) Nulo Comentário
PRIMARY BTREE Sim Não id 27 A Não
curso_id BTREE Não Não curso_id 9 A Sim
Peço ajuda a vocês,
Obrigado.
Me deparei com um grave problema. Ao cadastrar um registro no banco, dispara um erro (ver imagem em anexo):
Error SQLSTATE[23000]: Integrity constraint violation: 1451 Cannot delete or update a parent row: a foreign key constraint fails (`elainelins`.`pagamento`, CONSTRAINT `pagamento_ibfk_2` FOREIGN KEY (`fatura_id`) REFERENCES `fatura` (`id`))
A tabela do banco está como a seguir:
Pagamento
Coluna Tipo Nulo Predefinido Ligações para Comentários MIME
id bigint(20) Não
data_pagamento date Sim NULL
valor_pago float Sim NULL
desconto float Sim NULL
observacao varchar(256) Sim NULL
forma_pagamento_id bigint(20) Sim NULL forma_pagamento -> id
fatura_id bigint(20) Sim NULL fatura -> id
Índices
Nome da chave Tipo Único Pacote Coluna Quantidade Agrupamento (Collation) Nulo Comentário
PRIMARY BTREE Sim Não id 1 A Não
forma_pagamento_id BTREE Não Não forma_pagamento_id 1 A Sim
fatura_id BTREE Não Não fatura_id 1 A Sim
forma_pagamento
Coluna Tipo Nulo Predefinido Comentários MIME
id bigint(20) Não
descricao varchar(256) Sim NULL
Índices
Nome da chave Tipo Único Pacote Coluna Quantidade Agrupamento (Collation) Nulo Comentário
PRIMARY BTREE Sim Não id 4 A Não
fatura
Coluna Tipo Nulo Predefinido Ligações para Comentários MIME
id bigint(20) Não
data_cadastro date Sim NULL
data_vencimento date Sim NULL
curso_id bigint(20) Sim NULL curso -> id
valor float Sim NULL
pago tinyint(1) Sim NULL
Índices
Nome da chave Tipo Único Pacote Coluna Quantidade Agrupamento (Collation) Nulo Comentário
PRIMARY BTREE Sim Não id 27 A Não
curso_id BTREE Não Não curso_id 9 A Sim
Peço ajuda a vocês,
Obrigado.
Voce deve estar tenatndo excluir algo que ainda tem alguma referencia.
Por exemplo, hoje no Template II adicionei um programa e depois coloquei este programa num grupo.
Ao tentar excluir o programa dava este mesmo erro, entao exclui o programa do grupo, depois exclui o programa.
Ola, estou com o mesmo erro, mas no campo Seek, usei o designer e criei o campo TSeekButton via programação. O campo faz o carregamento do correto mas na hora de salvar ele limpa o campo e não salva, pois a tabela tem chave estrangeira. Eu acredito que o erro deve estar na programação.
Eu inclusive alterei a chave estrangeira no banco para CASCADE, mas o erro continua.
Provavelmente tem uma composição aí.
Lembre que no relacionamento de composição, quando o objeto "todo" for manipulado, as suas "partes" são sempre excluídas e gravadas de novo. Então não devem existir relacionamentos externos para as "partes".
Observe o método store(), deve ter um saveComposite() lá. Se sim, não deve ser composição, modelar como associação simples.
Att,
Pablo