pg报错current transaction is aborted

在一个事务中,pg报错了current transaction is aborted:

原因是在一个事务中,pg如果遇到的Error的报错,会忽略后续的命令,后续所有命令都会报错:current transaction is aborted, commands ignored until end of transaction block。 直到手工确认该事务结束(需要commit或者rollback)

这个问题,可以在psql中设置ON_ERROR_ROLLBACK true来绕过:

我们来看一下ON_ERROR_ROLLBACK和另外一个类似的ON_ERROR_STOP。
这2个参数,可以\set观看当前设置,默认值都是off:

这2个参数,一般用在数据导入到时候,

可以看到,设置ON_ERROR_STOP true的时候,导入数据时,一旦报错,就停止了,不再导入后面的数据。

可以看到,设置ON_ERROR_ROLLBACK true的时候,导入数据时,报错的命令是回滚了,但是后续的命令可以继续。

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据