暂无图片
暂无图片
3
暂无图片
暂无图片
暂无图片

PostgreSQL之ERROR: 25P02: current transaction is aborted

17144

你可能在日志文件中看到过如下所示信息。

    ERROR: 25P02: current transaction is aborted, commands ignored until end of transaction block
    复制

    含义:当前事务被终止, 命令被忽略,直到事务结束。

    原因:

    pg中,如果同一事务中如果某次数据库操作出错了,那么当前事务中这个操作以后的所有命令都将出错。

    解决这种问题方法:

    我们可以在应用中增加检测机制,当我们检测事务中有sql失败时,可以通过回滚/重新开启事务,提交/重新开启事务来解决。

    或者,我们也可以直接设置事务自动提交。

    模拟下这个现象。

      testdb=> \set AUTOCOMMIT off
      testdb=> select * from test1;
      ERROR: relation "test1" does not exist
      LINE 1: select * from test1;
      ^
      testdb=> select * from aaa;
      ERROR: current transaction is aborted, commands ignored until end of transaction block
      testdb=> rollback;
      ROLLBACK
      testdb=> select * from aaa;
      id | info | crt_time | c1
      ----+------+----------+----
      (0 rows)
      复制

      文章转载自PostgreSQL运维技术,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

      评论