Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

My name is Jan Lucas

Erro ao deletar usuario do banco

Recommended Posts

Bom dia Galera!

Como devoproceder diante deste erro?

 

consulta SQL:

DELETE FROM `helpdesk`.`user_admin` WHERE `user_admin`.`id` =3

Mensagens do MySQL : Documentação
#1451 - Cannot delete or update a parent row: a foreign key constraint fails (`helpdesk`.`enter_box_user`, CONSTRAINT `enter_box_user_ibfk_1` FOREIGN KEY (`receptor_resposta_fk`) REFERENCES `user_admin` (`id`)) 

 

Eu tentei deletar um usuario na tabela user_admin que eh onde ficam os usuarios cadastrados e o administrador que está relacionada com todas as tabelas atraves do id's do usuario..

 

E na hora de criar as tabelas eu usei ON DELETE CASCADE e ON UPDATE CASCADE

 

Como posso resolver isso.?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas já chegou a dar certo, se não me engano quando criei a funcionalidade de do Admin deletar um usuario funcionou.

mas agora acusa esse erro.

 

Olha esse tutorial ->

1– Quando o usuário deletar ou fizer update em uma categoria, as alterações sejam aplicadas em todos os locais que possuir a chave estrangeira deste registro.

O relacionamento ficaria assim:

 


CREATE TABLE `tb_product` 
id INT NOT NULL AUTO_INCREMENT,
id_category INT NOT NULL, 
produto VARCHAR(100) NOT NULL, 
PRIMARY KEY (id), 
FOREIGN KEY(`id_category`) REFERENCES `tb_category`(`id_category`) 
--command to delete all registers
ON DELETE CASCADE 
--command to update all registers 
ON UPDATE CASCADE 

 

Eu fiz assim mas não tá dando certo na hora de excluir o usuário, por ele está ligado a todas as outras tabelas. Eu declarei ON DELETE CASCADE na criação de todas as tabelas menos na que contém os usuários. Seria isso? Não sei!

E jah que o usuário está ligado a uma tabela, quando ele for excluído o id dele nas outras tabelas também serão?

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que eu disse é que se excluir um user , se usa

drop user
e não
delete from ...
.

 

A opção de tabela ON DELETE CASCADE, diz que na caso de uma deleção os registros dependentes (FK) serão delatados, útil para casos como NOTAS FISCAIS X ITENS DE NF em que não faz sentido manter registros filhos na exclusão.

 

Não confudir com o CASCADE da opção do DROP , nela os objetos criados pelo user serão mandados ao espaço.

 

Ajudei ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sério Sério. Me Confundi agora.

 

Não faço nem ideia de como aplicar o que você me explicou. Pq quando eu criei a tabela eu botei ON DELETE CASCADE.

E no php eu uso

mysql_query("DELETE FROM user_admin WHERE id = variavel_id");

Assim excluo o usuário. Mas você me disse que pra exluir tenho q usar drop user?

Compartilhar este post


Link para o post
Compartilhar em outros sites

perdão, a tatela user_admin foi criada por você ou é do MySql ?

 

Creio ter entendido errado o problema, desculpe.

 

O problema está que a CONSTRAINT `enter_box_user_ibfk_1` impede a deleção, veja qual a regra que ela tem,

deve ser alguma outra tabela que depende desta.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Java Student, bom dia.

 

Você não vai conseguir excluir esse usuário pois ele está relacionado em outras tabelas.

#1451 - Cannot delete or update a parent row: a foreign key constraint fails (`helpdesk`.`enter_box_user`, CONSTRAINT `enter_box_user_ibfk_1` FOREIGN KEY (`receptor_resposta_fk`) REFERENCES `user_admin` (`id`))

Apague todos os registros relacionados ao usuário e depois utilize o comando:

 

mysql_query("DELETE FROM user_admin WHERE id = variavel_id");

 

 

Motta, ele quer excluir um registro na tabela, e não o usuário do banco. Ficou meio confuso mesmo!

 

Um abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu achei, por desconhecimento que user_admin fose uma tabela de metadados do MySql, mea culpa.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Java Student, bom dia.

 

Você não vai conseguir excluir esse usuário pois ele está relacionado em outras tabelas.

#1451 - Cannot delete or update a parent row: a foreign key constraint fails (`helpdesk`.`enter_box_user`, CONSTRAINT `enter_box_user_ibfk_1` FOREIGN KEY (`receptor_resposta_fk`) REFERENCES `user_admin` (`id`))

Apague todos os registros relacionados ao usuário e depois utilize o comando:

 

mysql_query("DELETE FROM user_admin WHERE id = variavel_id");

 

 

Motta, ele quer excluir um registro na tabela, e não o usuário do banco. Ficou meio confuso mesmo!

 

Um abraço.

 

Antes dos usuários terem enviado mensagens eu os deletei e funcionou. Porque eles não tinham mantido relacionamento ainda. Mas testei com eles mandando as mensagens e ai não funcionou.

 

Eu achava que quando eu declarava ON DELETE CASCADE na criação das outras tabelas e não da de usuários(user_admin) automaticamente quando eu apagasse o usuário todos os outros registros seriam deletados.

 

Então terei de deletar primero os outros registros relacionados e depois o usuário? Mesmo eles estando relacionados?

 

Abraço!

E desculpa aew a falta de clareza. =/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caso você necessite, aplique o DELETE CASCADE na tabela que voce está executando o delete, no caso seria a user_admin.

Eu não recomendo isso, pois, você irá perder os registros relacionados ao usuário (o que pode ser útil no futuro).

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caso você necessite, aplique o DELETE CASCADE na tabela que voce está executando o delete, no caso seria a user_admin.

Eu não recomendo isso, pois, você irá perder os registros relacionados ao usuário (o que pode ser útil no futuro).

 

Brigadão a você e ao Motta pela ajuda.! Vlw mesmo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu tentei pelas duas maneiras: Usando o DELETE CASCADE e deletando as informações pertentecente ao usuario que vai ser deletado em todas as tabelas. Mas não da certo. A FK não deixa. Alguma sugestão?

 

Vlw

 

Eu tentei pelas duas maneiras: Usando o DELETE CASCADE e deletando as informações pertentecente ao usuario que vai ser deletado em todas as tabelas. Mas não da certo. A FK não deixa. Alguma sugestão?

 

Tipo eu consegui fazer com que o administrador do sistema que estou a desenvolver, se excluisse e deu CERTO. mesmo ele tendo ralações com outras 2 tabelas. TIpo ele mandou mensagens e excluiu, então tem mensagens na caixa de entrada e na lixeira relacionadas a ele. Mas eu fiz da forma citada a cima e funcionou. Mas com o usuario nao da certo. Aaaaaaaaf.

 

Alguma Sugestão?

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.