• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

pgsql报错current transaction is aborted, commands ignored until end of transaction block

武飞扬头像
街口卖菜的老刘
帮助1

我们在PG数据库,关闭了事务的自动提交的情况下,会经常的遇到这样的问题

ERROR: current transaction is aborted, commands ignored until end of transaction block

为什么会造成了这样的问题,原因是

Postgres数据库中,同一事务中如果某次数据库操作中出错的话,那这个事务以后的数据库都会出错。

我们举个很简单的例子

  1.  
    test=# select * from test1;
  2.  
    ERROR: relation "test1" does not exist
  3.  
    LINE 1: select * from test1;
  4.  
    Time: 0.376 ms

这个时候,由于这不操作错误了,那么后面所有的这个会话中的操作都会报

ERROR: current transaction is aborted, commands ignored until end of transaction block

这个时候,我们要解决这个问题,只能够使用rollback,或者是commit去解决

这一点上面,PG做得不够人性化

如果是python操作pgsql,解决方法如下:

  1.  
    try:
  2.  
    function()
  3.  
    except Exception as e:
  4.  
    print('------------>',e)
  5.  
    cursor.execute("ROLLBACK") #如果数据错误,执行回滚操作

cursor.execute("ROLLBACK")

先try执行你需要的代码,然后except执行上面这条回滚操作就可以调过继续执行

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhfkfcic
系列文章
更多 icon
同类精品
更多 icon
继续加载