我正在尝试从 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 block 中创建一个新语句。
Statement stmt = data.db.getConnection().createStatement();
ResultSet rs = stmt.executeQuery(" SELECT Bla,Bla From..");
ResultSet
需要连接并处于 Activity 状态才能执行 next();
关于java - 如何防止交易在捕获时关闭(异常 e)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35825574/