Cannot add or update a child row: a foreign key constraint fails

6 respostas
java
L

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.

public int retornaCodigoTipo(String tipo) {
            try {
                banco.conectaBanco();
                rs = banco.st.executeQuery("SELECT Codigo_Tipo FROM tipo_manutencao "
                        + " WHERE Tipo = '" + tipo + "'");
                while (rs.next()) {
                    int codigo_tipo = rs.getInt("Codigo_Tipo");
                    return codigo_tipo;
                }
            } catch (Exception e) {
            }
            return 0;
        }

6 Respostas

pmlm

Esse erro será num insert ou update e não no select indicado.

L

O insert é esse:

List<Object> parametros = new ArrayList();
            String sql = "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.

pmlm

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

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?

pmlm

Tens de executar em debug ou colocar prints ai pelo meio para perceberes que valores têm as tuas variaveis e identificares o erro.

L

**_

Encontrei o erro, muito obrigado pela ajuda.

_**

Criado 11 de março de 2016
Ultima resposta 14 de mar. de 2016
Respostas 6
Participantes 2