Cannot add or update a child row: a foreign key constraint fails
6 respostas
java
L
LuiizHenrique
Estou com esse erro Cannot add or update a child row: a foreign key constraint fails, quando passo no método abaixo. Alguem poderia me ajudar, sou iniciante.
publicintretornaCodigoTipo(Stringtipo){try{banco.conectaBanco();rs=banco.st.executeQuery("SELECT Codigo_Tipo FROM tipo_manutencao "+" WHERE Tipo = '"+tipo+"'");while(rs.next()){intcodigo_tipo=rs.getInt("Codigo_Tipo");returncodigo_tipo;}}catch(Exceptione){}return0;}
Esse erro será num insert ou update e não no select indicado.
L
LuiizHenrique
O insert é esse:
List<Object>parametros=newArrayList();Stringsql="INSERT INTO manutencao (Descricao, Codigo_Situacao, Codigo_Tipo, "+" Codigo_Cliente, Data_Pedido, Data_Prazo, Excluido)"+" VALUES (?,?,?,?,?,?,?)";parametros.add(txtDescricao.getText());parametros.add(manutencao.retornaCodigoSituacao(ComboSituacao.getSelectedItem().toString()));parametros.add(manutencao.retornaCodigoTipo(ComboTipo.getSelectedItem().toString()));parametros.add(manutencao.retornaCodigoCliente(ComboCliente.getSelectedItem().toString()));parametros.add(data.retornaTimesTamp(ComboDataPe.getDate()));parametros.add(data.retornaTimesTamp(ComboDataFin.getDate()));parametros.add(0);ConexaoMY.executarInsert(sql,parametros);JOptionPane.showMessageDialog(null,"Salvo com sucesso!");
O método que coloqui acima está sendo usado nesse insert.
pmlm1 like
Algum dos campos Codigo_Situacao, Codigo_Tipo, Codigo_Cliente deve ser chave estrangeira para outra tabela, mas não existe o registo nessa tabela.
Isto acontece se, por exemplo, estiveres a inserir um registo com o código de cliente 123 mas não existe o cliente 123 na tabela de clientes.
L
LuiizHenrique
O erro está ocorrendo na tabela tipo_manutencao, só que nela contem 2 registros. Isso que eu não estou entendendo ela contem os registros e ná tabela manutencao tem o Codigo_Tipo como chave estrangeira. Pelo o que eu entendi no codigo, aquele primeiro método que eu coloquei, não está passando nada para o resultSet, só que quando eu coloco a Query no MySQL ela funciona perfeitamente, e retorna o codigo.
ALGUEM PODE ME AJUDAR POR FAVOR?
pmlm1 like
Tens de executar em debug ou colocar prints ai pelo meio para perceberes que valores têm as tuas variaveis e identificares o erro.