如何防止交易在捕获时关闭(异常 e)?
How to prevent from transaction to close at the catch(Exception e)?
我正在尝试 运行 从 java 到 PosgresSQL 的查询,但我从 stmt.execute(sql)
中收到错误
我想执行一个新的查询来帮助我打印出失败的特定行,但是当我到达 catch (Exception e)
时事务被中止。
我无法创建新事务,因为我正在使用临时表。如何防止交易中止?
org.postgresql.util.PSQLException: ERROR: current transaction is aborted, commands ignored until end of transaction block
try (Statement stmt = data.db.getConnection().createStatement()) {
// data.db.getConnection().setSavepoint("sp01");
// insert to fact table
TableSchema factTableSchema = factInfo.getTableSchema();
// build SQL
String sql = "Select * From....";
try {
stmt.execute(sql); // this row is failing
}
catch (Exception e) {
try {
// now i would like to run a query only in case arrived here, but the transaction is closed
// how could i prevent from trasanction to close ?
ResultSet rs = stmt.executeQuery(" SELECT Bla,Bla From..");
Log.debug("");
}
catch (Exception e2) {
Log.debug("");
}
}
在执行查询之前在第二个 try 块中创建一个新语句。
Statement stmt = data.db.getConnection().createStatement();
ResultSet rs = stmt.executeQuery(" SELECT Bla,Bla From..");
ResultSet
需要连接并处于活动状态才能执行 next();
我正在尝试 运行 从 java 到 PosgresSQL 的查询,但我从 stmt.execute(sql)
我想执行一个新的查询来帮助我打印出失败的特定行,但是当我到达 catch (Exception e)
时事务被中止。
我无法创建新事务,因为我正在使用临时表。如何防止交易中止?
org.postgresql.util.PSQLException: ERROR: current transaction is aborted, commands ignored until end of transaction block
try (Statement stmt = data.db.getConnection().createStatement()) {
// data.db.getConnection().setSavepoint("sp01");
// insert to fact table
TableSchema factTableSchema = factInfo.getTableSchema();
// build SQL
String sql = "Select * From....";
try {
stmt.execute(sql); // this row is failing
}
catch (Exception e) {
try {
// now i would like to run a query only in case arrived here, but the transaction is closed
// how could i prevent from trasanction to close ?
ResultSet rs = stmt.executeQuery(" SELECT Bla,Bla From..");
Log.debug("");
}
catch (Exception e2) {
Log.debug("");
}
}
在执行查询之前在第二个 try 块中创建一个新语句。
Statement stmt = data.db.getConnection().createStatement();
ResultSet rs = stmt.executeQuery(" SELECT Bla,Bla From..");
ResultSet
需要连接并处于活动状态才能执行 next();