PostgreSQL - Error al intentar hacer un rollback de una transacción desde java

 
Vista:
sin imagen de perfil
Val: 23
Ha mantenido su posición en PostgreSQL (en relación al último mes)
Gráfica de PostgreSQL

Error al intentar hacer un rollback de una transacción desde java

Publicado por Martin (8 intervenciones) el 11/09/2020 13:35:38
Mi problema es que deseo hacer desde java una transacción con un update y una función dentro de la misma:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
public void cambiarContrasena(String nombre, String password, String nuevo_password) throws SQLException {
 
    conex.getConexion().setAutoCommit(false);
    PreparedStatement ps1 = null, ps2 = null;
    try {
        String sql1 = "UPDATE usuarios SET password = ? WHERE password = ? ;";
        ps1 = conex.getConexion().prepareStatement(sql1);
 
        ps1.setString(1, nuevo_password);
        ps1.setString(2, password);
        ps1.executeUpdate();
 
        String sql2 = "SELECT agregarModificacion(?,?);";
        ps2 = conex.getConexion().prepareStatement(sql2);
        ps2.setString(1, nombre);
        ps2.setString(2, "Cambió su contraseña");
        ps2.executeUpdate();
        conex.getConexion().commit();
 
    } catch (SQLException ex) {
        conex.getConexion().rollback();
    } finally {
        if (ps1 != null) {
            ps1.close();
        }if (ps2 != null) {
            ps2.close();
        }
    }
}
y cuando la voy a correr me aparece lo siguiente:

1
org.postgresql.util.PSQLException: Cannot rollback when autoCommit is enabled.
Alguien sabe a qué se debe esto?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Francisco
Val: 256
Oro
Ha mantenido su posición en PostgreSQL (en relación al último mes)
Gráfica de PostgreSQL

Error al intentar hacer un rollback de una transacción desde java

Publicado por Francisco (110 intervenciones) el 11/09/2020 19:11:54
Hola

Prueba asignado la conexion a otra variable

1
2
3
4
5
6
7
8
cnn = conex.getConexion();
cnn..setAutoCommit(false);
 
....
 
if (!cnn.getAutoCommit()) {
   cnn.setAutoCommit(true);
}

Tambien puede indicarlo explicitamente al abrir la sesion ejecutando SET AUTOCOMMIT = OFF

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 23
Ha mantenido su posición en PostgreSQL (en relación al último mes)
Gráfica de PostgreSQL

Error al intentar hacer un rollback de una transacción desde java

Publicado por Martin (8 intervenciones) el 13/09/2020 00:14:23
Gracias Francisco, era ese el problema que por cada sentencia abría una nueva conexión.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar