PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Bagaimana cara Menangkap catatan kesalahan menggunakan JDBCTemplate batchUpdate di postgreSql?

Anda tidak mendapatkan BatchUpdateException , karena Anda mungkin menggunakan SQLErrorCodeSQLExceptionTranslator di jdbcTemplate , yang menangani BatchUpdateException s dengan cara khusus :

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

Ada masalah tentang itu:

Anda dapat mengurangi ini, jika Anda menggunakan SQLStateSQLExceptionTranslator :

jdbcTemplate.setExceptionTranslator(new SQLStateSQLExceptionTranslator());

Kemudian Anda akan mendapatkan BatchUpdateException sebagai cause :

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

Tapi perhatikan bahwa dalam kasus driver jdbc postgresql BatchUpdateException#getUpdateCounts() akan berisi EXECUTE_FAILED saja, meskipun faktanya beberapa baris berhasil dimasukkan.

Lihat ini masalah




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara mengkonfigurasi dan memulai PostgreSQL secara manual di windows?

  2. SQLAlchemy + Postgres:Anda mungkin perlu menambahkan gips tipe eksplisit saat digabungkan

  3. Ukuran memori yang diizinkan 8589934592 byte habis

  4. [Video] Ansible dan PostgreSQL

  5. Postgres - cara mengenkripsi kolom dan datanya