PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Làm thế nào để chụp các bản ghi lỗi bằng cách sử dụng JDBCTemplate batchUpdate trong postgreSql?

Bạn không nhận được BatchUpdateException , vì bạn có thể sử dụng SQLErrorCodeSQLExceptionTranslator trong jdbcTemplate , xử lý BatchUpdateException s theo một cách đặc biệt :

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

Có một vấn đề về nó:

Bạn có thể giảm thiểu điều này nếu sử dụng SQLStateSQLExceptionTranslator :

jdbcTemplate.setExceptionTranslator(new SQLStateSQLExceptionTranslator());

Sau đó, bạn sẽ nhận được BatchUpdateException như một cause :

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

Nhưng lưu ý rằng trong trường hợp trình điều khiển postgresql jdbc BatchUpdateException#getUpdateCounts() sẽ chứa EXECUTE_FAILED chỉ, mặc dù thực tế là một số hàng có thể được chèn thành công.

Xem điều này vấn đề




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Đi thẳng vào đám mây tại CHAR (10)

  2. Tương đương của từ kép trong PostgreSQL

  3. PostgreSQL - Cú pháp DISTINCT ON và GROUP BY

  4. PostgreSQL là gì?

  5. Hàm AVG () trong PostgreSQL