你可能在日志文件中看到过如下所示信息。
ERROR: 25P02: current transaction is aborted, commands ignored until end of transaction block
含义:当前事务被终止, 命令被忽略,直到事务结束。
原因:
在pg中,如果同一事务中如果某次数据库操作出错了,那么当前事务中这个操作以后的所有命令都将出错。
解决这种问题方法:
我们可以在应用中增加检测机制,当我们检测事务中有sql失败时,可以通过回滚/重新开启事务,提交/重新开启事务来解决。
或者,我们也可以直接设置事务自动提交。
模拟下这个现象。
testdb=> \set AUTOCOMMIT offtestdb=> select * from test1;ERROR: relation "test1" does not existLINE 1: select * from test1;^testdb=> select * from aaa;ERROR: current transaction is aborted, commands ignored until end of transaction blocktestdb=> rollback;ROLLBACKtestdb=> select * from aaa;id | info | crt_time | c1----+------+----------+----(0 rows)
文章转载自PostgreSQL运维技术,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




