PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да заснема записи за грешки с помощта на JDBCTemplate batchUpdate в postgreSql?

Не получавате BatchUpdateException , защото може да използвате SQLErrorCodeSQLExceptionTranslator в jdbcTemplate , който обработва BatchUpdateException s по специален начин :

if (sqlEx instanceof BatchUpdateException && sqlEx.getNextException() != null) {
    SQLException nestedSqlEx = sqlEx.getNextException();
    if (nestedSqlEx.getErrorCode() > 0 || nestedSqlEx.getSQLState() != null) {
        sqlEx = nestedSqlEx;
    }
}

Има проблем с това:

Можете да смекчите това, ако използвате SQLStateSQLExceptionTranslator :

jdbcTemplate.setExceptionTranslator(new SQLStateSQLExceptionTranslator());

Тогава ще получите BatchUpdateException като cause :

try {
    // ...
} catch (DataAccessException e) {
    Throwable cause = e.getCause();
    logger.info("cause instanceof BatchUpdateException = {}", cause instanceof BatchUpdateException);
 }

Но имайте предвид, че в случай на драйвер postgresql jdbc BatchUpdateException#getUpdateCounts() ще съдържа EXECUTE_FAILED само въпреки факта, че някои редове могат да бъдат вмъкнати успешно.

Вижте това проблем




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Възстановете дъмпа на отдалечената машина

  2. Генериране на автоматичен идентификатор в postgresql

  3. PostgreSQL ръчно променя плана за изпълнение на заявката, за да принуди да използва сортиране и последователен достъп вместо пълно сканиране

  4. Получаване на неизвестен първичен ключ за таблица, докато идентификаторът е там

  5. Функция за създаване на PostgreSQL