Estou criando um batch que usa banco de dados postgres e estou tomando erro na busca de valores

6 respostas Resolvido
java
W

Toda vez que busco o valor da sequence eu levo a seguinte exception:

org.springframework.jdbc.UncategorizedSQLException: PreparedStatementCallback; uncategorized SQLException for SQL [SELECT nextval(?)]; SQL state [25P02]; error code [0]; ERROR: current transaction is aborted, commands ignored until end of transaction block; nested exception is org.postgresql.util.PSQLException: ERROR: current transaction is aborted, commands ignored until end of transaction block

6 Respostas

L

Posta o código de como vc está executando a consulta.

W
@Override
    public Long findSequenceValue(final String name) {
        final var params = new MapSqlParameterSource()
                .addValue("name", name);
        try {
            return jdbcOperations.queryForObject(FIND_SEQUENCE_VALUE, params, Long.class);
        } catch (final Exception e) {
            final var message = String.format("Query: %s | Params: %s | Exception: %s"
                    , FIND_SEQUENCE_VALUE, params, e);

            log.error(message);

            return null;
        }
    }
@NoArgsConstructor(access = PRIVATE)
public class SequenceQuery {

    public static final String FIND_SEQUENCE_VALUE = "SELECT nextval(:name)";

}
L

Dei uma pesquisada pelo código 25P02, e parece que esse erro é causado quando outras consultas executadas na mesma transação deram erro. Pode parecer meio vago, mas está indicando que o problema pode ser em outra parte do fluxo que vc está executando.

Sobre o código de erro:

25P02 - IN FAILED SQL TRANSACTION - in_failed_sql_transaction

FONTE: PostgreSQL: Documentation: 8.2: PostgreSQL Error Codes

W

Ah sim, o erro é esse aqui:

org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; bad SQL grammar [INSERT INTO tb_arquivo (id_arquivo, id_status, nm_arquivo, dt_carga, dh_inicio) VALUES (?, ?, ?::date, ?, ?::date)]; nested exception is org.postgresql.util.PSQLException: ERROR: column "dt_carga" is of type date but expression is of type character varying
  Dica: You will need to rewrite or cast the expression.
  Posição: 107
P
Solucao aceita

A mensagem erro diz exatamente qual é o problema. Estás a passar o campo como varchar (provavelmente com setString()) quando deveria ser um date (setDate()).

W

Era a ordem das colunas, obrigado

Criado 16 de maio de 2023
Ultima resposta 17 de mai. de 2023
Respostas 6
Participantes 3