1452 Cannot add or update a Child Row: a Foreign key Constraint fails

Asked

Viewed 1,660 times

0

SQL Query:

INSERT INTO tributos_prod (codigo, ncm, Descricao, preco, quantidade, v_total, situacao_trib_icms, origem_trib_icms, aliquota_icms, credito_icms, situacao_trib_pis, valor_base_pis, aliquota_pis, valor_pis, situacao_trib_cofins, valor_base_cofins, aliquota_cofins, valor_cofins, aliquota_interestadual, percent_prov_part, icms_part_uf_dest, icms_part_uf_rmt, icms_fcp_uf_dest, id_nfe) VALUES(:codigo, :ncm, :Descricao, :preco, :quantidade, :v_total, :situacao_trib_icms, :origem_trib_icms, :aliquota_icms, :credito_icms, :situaca_trib_pis, :valor_base_pis, :aliquota_pis, :valor_pis, :situaca_trib_cofins, :valor_base_cofins, :aliquota_cofins, :valor_cofins, :aliquota_interestadual, :percent_prov_part, :icms_part_uf_dest, :icms_part_uf_rmt, :icms_fcp_uf_dest, :id_nfe)

try {
    $query = $conecta->prepare($sql);
    $query->bindValue(':codigo',$codigo,PDO::PARAM_STR);
    $query->bindValue(':ncm',$ncm,PDO::PARAM_STR);
    $query->bindValue(':descricao',$descricao,PDO::PARAM_STR);
    $query->bindValue(':preco',$preco,PDO::PARAM_STR);
    $query->bindValue(':quantidade',$quantidade,PDO::PARAM_STR);
    $query->bindValue(':v_total',$v_total,PDO::PARAM_STR);
    $query->bindValue(':situacao_trib_icms',$situacao_trib_icms,PDO::PARAM_STR);
    $query->bindValue(':origem_trib_icms',$origem_trib_icms,PDO::PARAM_STR);
    $query->bindValue(':aliquota_icms',$aliquota_icms,PDO::PARAM_STR);
    $query->bindValue(':credito_icms',$credito_icms,PDO::PARAM_STR);
    $query->bindValue(':situacao_trib_pis',$situacao_trib_pis,PDO::PARAM_STR);
    $query->bindValue(':valor_base_pis',$valor_base_pis,PDO::PARAM_STR);
    $query->bindValue(':aliquota_pis',$aliquota_pis,PDO::PARAM_STR);
    $query->bindValue(':valor_pis',$valor_pis,PDO::PARAM_STR);
    $query->bindValue(':situacao_trib_cofins',$situacao_trib_cofins,PDO::PARAM_STR);
    $query->bindValue(':valor_base_cofins',$valor_base_cofins,PDO::PARAM_STR);
    $query->bindValue(':aliquota_cofins',$aliquota_cofins,PDO::PARAM_STR);
    $query->bindValue(':valor_cofins',$valor_cofins,PDO::PARAM_STR);
    $query->bindValue(':aliquota_interestadual',$aliquota_interestadual,PDO::PARAM_STR);
    $query->bindValue(':percent_prov_part',$percent_prov_part,PDO::PARAM_STR);
    $query->bindValue(':icms_part_uf_dest',$icms_part_uf_dest,PDO::PARAM_STR);
    $query->bindValue(':icms_part_uf_rmt',$icms_part_uf_rmt,PDO::PARAM_STR);
    $query->bindValue(':icms_fcp_uf_dest',$icms_fcp_uf_dest,PDO::PARAM_STR);
    $query->bindValue(':id_nfe',$nNFe,PDO::PARAM_INT);
    $query->execute();  
}catch(PDOExcepetion $erro){
    echo -1;
}

SQL structure tributos_prod:

  `id` int(11) NOT NULL AUTO_INCREMENT,
  `id_nfe` int(11) NOT NULL,
  `codigo` varchar(255) DEFAULT NULL,
  `ncm` varchar(255) DEFAULT NULL,
  `descricao` varchar(255) DEFAULT NULL,
  `preco` varchar(255) DEFAULT NULL,
  `v_total` varchar(255) DEFAULT NULL,
  `quantidade` varchar(255) DEFAULT NULL,
  `situacao_trib_icms` varchar(255) DEFAULT NULL,
  `origem_trib_icms` varchar(255) DEFAULT NULL,
  `aliquota_icms` varchar(255) DEFAULT NULL,
  `credito_icms` varchar(255) DEFAULT NULL,
  `situacao_trib_pis` varchar(255) DEFAULT NULL,
  `valor_base_pis` varchar(255) DEFAULT NULL,
  `aliquota_pis` varchar(255) DEFAULT NULL,
  `valor_pis` varchar(255) DEFAULT NULL,
  `situacao_trib_cofins` varchar(255) DEFAULT NULL,
  `valor_base_cofins` varchar(255) DEFAULT NULL,
  `aliquota_cofins` varchar(255) DEFAULT NULL,
  `valor_cofins` varchar(255) DEFAULT NULL,
  `aliquota_interestadual` varchar(255) DEFAULT NULL,
  `percent_prov_part` varchar(255) DEFAULT NULL,
  `icms_part_uf_dest` varchar(255) DEFAULT NULL,
  `icms_part_uf_rmt` varchar(255) DEFAULT NULL,
  `icms_fcp_uf_dest` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `fk_nfe` (`id_nfe`),
  CONSTRAINT `fk_nfe` FOREIGN KEY (`id_nfe`) REFERENCES `nfe` (`id`)

SQL structure nfe:

  `id` int(11) NOT NULL AUTO_INCREMENT,
  `id_nfe` int(11) DEFAULT NULL,
  `id_emitente` varchar(255) DEFAULT NULL,
  `id_cliente` varchar(255) DEFAULT NULL,
  `tipo_pessoa` varchar(255) DEFAULT NULL,
  `n_cad` varchar(255) DEFAULT NULL,
  `id_transportadora` varchar(255) DEFAULT NULL,
  `situacao` varchar(255) DEFAULT NULL,
  `ambiente` varchar(1) DEFAULT NULL,
  `cfop` varchar(255) DEFAULT NULL,
  `serie` int(3) DEFAULT NULL,
  `data_emissao` varchar(255) DEFAULT NULL,
  `data_saida_entrada` varchar(255) DEFAULT NULL,
  `tipo_emissao` varchar(255) DEFAULT NULL,
  `finalidade` varchar(255) DEFAULT NULL,
  `cliente` varchar(255) DEFAULT NULL,
  `uf_cliente` varchar(255) DEFAULT NULL,
  `transportadora` varchar(255) DEFAULT NULL,
  `metodo_pagamento` varchar(255) DEFAULT NULL,
  `infs_fisco` varchar(255) DEFAULT NULL,
  `infs_contribuinte` varchar(255) DEFAULT NULL,
  `cuf` varchar(255) DEFAULT NULL,
  `cnf` int(8) DEFAULT NULL,
  `chave` varchar(255) DEFAULT NULL,
  `recibo` varchar(255) DEFAULT NULL,
  `protocolo` varchar(255) DEFAULT NULL,
  `modalidade_frete` varchar(255) DEFAULT NULL,
  `tipo_contribuinte` varchar(255) DEFAULT NULL,
  `data_venda` varchar(255) DEFAULT NULL,
  `itens` varchar(255) DEFAULT NULL,
  `qt_itens` varchar(255) DEFAULT NULL,
  `especie` varchar(255) DEFAULT NULL,
  `qt_volumes` varchar(255) DEFAULT NULL,
  `peso_liquido` varchar(255) DEFAULT NULL,
  `peso_bruto` varchar(255) DEFAULT NULL,
  `desconto` varchar(255) DEFAULT NULL,
  `total` varchar(255) DEFAULT NULL,
  `tipo_doc` varchar(255) DEFAULT NULL,
  `tipo_impressao_danfe` varchar(255) DEFAULT NULL,
  `cons_final` varchar(255) DEFAULT NULL,
  `seq_evento` int(11) DEFAULT NULL,
  `chaveReferenciada` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)

Fatal error: Uncaught Exception 'Pdoexception' with message 'SQLSTATE[23000]: Integrity Constraint Violation: 1452 Cannot add or update a Child Row: a Foreign key Constraint fails (bwdbwd_emissor_nfe.tributos_prod, CONSTRAINT fk_nfe FOREIGN KEY (id_nfe) REFERENCES nfe (id))'

-

Pdoexception: SQLSTATE[23000]: Integrity Constraint Violation: 1452 Cannot add or update a Child Row: a Foreign key Constraint fails (bwdbwd_emissor_nfe.tributos_prod, CONSTRAINT fk_nfe FOREIGN KEY (id_nfe) REFERENCES nfe (id))

I tried to use in query : :VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)

Starting to generate the following error:

Pdoexception: SQLSTATE[HY093]: Invalid Parameter number: Parameter was not defined

  • The mistake SQLSTATE[HY093] usually falls in or you have more placeholders than values or otherwise have some name typed wrong. Already the main mistake (what you should focus on) SQLSTATE[23000] the value in id_nfe may not exist in the table nfe

  • 1

    Hello @rray, exactly this rsrs'. I’m performing a insert for a value of id_nfe that does not exist in the table nfe. Thank you.

  • Not directly related to the error, but consider making the Binds with an array and for, that this code becomes difficult to maintain.

No answers

Browser other questions tagged

You are not signed in. Login or sign up in order to post.