Erro Salvar Registro no banco de dados

2 respostas
Chuvinha

Galera, estou tentando salvar o usuário e suas permissões no banco de dados, mas está dando erro no console.
Ele reclama da chave estrangeira.
Não entendi direito.

com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Cannot add or update a child row: a foreign key constraint fails (`prd_corp`.`tbl_usuario_servico`, CONSTRAINT `fk_tbl_usuario_servico_tbl_servico` FOREIGN KEY (`id_usuario`) REFERENCES `tbl_servico` (`id_servico`) ON DELETE NO ACTION ON UPDATE NO ACTION)

Abaixo meu código:

// salva os servicos deste usuario na tabela de relacionamento // para cada servico selecionado salva um registro no banco for (int idServico : this.idServicoList) { this.usuarioServico = new UsuarioServico(); this.usuarioServico.setUsuario(this.usuario); this.usuarioServico.getServico().setIdServico(idServico); this.usuarioServicoDAO.salvarUsuarioServico(this.usuarioServico); }
Alguém sabe o motivo dessa exception?

2 Respostas

E

Cara,

A tabela na qual você quer inserir o registro possui uma coluna que é chave estrangeira. Assim, se você definir que nessa coluna o valor será x, então a outra tabela deve haver um registro com o valor x na coluna correspondente.

Pelo que eu entendi, sua tabela Usuario tem uma chave estrangeira que é o id da tabela Servico. É isso mesmo?

Se for, certifique-se que existe um registro na tabela Servico com o idServico igual ao que você usa na linha abaixo:

this.usuarioServico.getServico().setIdServico(idServico);

Espero ter ajudado.

Chuvinha

É…vc tinha razão Edenilton.
Só que o problema estava no banco de dados mesmo.
A pessoa que fez a tabela usuario_servico havia trocado as duas fks.
A fk usuario estava referenciando a tabela de serviço e a fk serviço estava referenciando a tabela usuario.
Por isso não estava encontrando.
É isso ai, agora está funcionando.
Obrigado cara =))

Abraço

Criado 26 de outubro de 2010
Ultima resposta 27 de out. de 2010
Respostas 2
Participantes 2