如何检查PostgreSQL的psql是否启用了自动提交功能

22

我正在使用PostgreSQL 9.5。如何检查自动提交是开启还是关闭的?我尝试了 SHOW AUTOCOMMIT 命令,但出现了错误 ERROR: unrecognized configuration parameter "autocommit",然后我执行了\set autocommit off命令,再次运行SHOW AUTOCOMMIT 命令时输出为空白。如何确定自动提交是开启还是关闭?在我的SQL文件中能否设置自动提交为关闭状态?


1
好问题。自动提交似乎总是开启的,当我尝试查看设置时也收到了相同的消息。PG 9.4 至少显示了自动提交不能设置为 OFF 的文本。但是 9.5 和 9.6 给出了这个错误,尽管文档仍包含设置和显示自动提交命令。 - JosMac
2
是的,在Postgres中,默认情况下自动提交是开启的。我们可以使用\set AUTOCOMMIT off将其关闭。 - codec
3个回答

27
根据Dustin Marx的这篇文章,您可以使用:此链接
\echo :AUTOCOMMIT
如果希望“始终”禁用自动提交,可以将\set AUTOCOMMIT off元命令添加到本地的~/.psqlrc文件中。为了实现更全局的设置,可以将此元命令放置在数据库系统配置目录中的apsqlrc文件中(可以使用PostgreSQL操作系统级命令pg_config --sysconfdir查找该目录)。

1
谢谢。最好的永久设置位置在哪里?在我的应用程序中,我有一个 SQL 文件,其中我创建数据库。我应该在那里设置它吗? - codec
1
当我执行 pg_config --sysconfdir 时,出现了 您需要安装postgresql-server-dev-X.Y以构建服务器端扩展或libpq-dev以构建客户端应用程序。 的提示。 - codec

我尝试过了。cat ~/.psqlrc 的输出是 `-- -- system-wide psql configuration file

-- This file is read before the .psqlrc file in the user's home directory.

-- Copy this to your installation's sysconf directory and rename it psqlrc. -- The sysconf directory can be identified via "pg_config --sysconfdir".

\set AUTOCOMMIT off,我已经退出并重新登录了,但 echo :AUTOCOMMIT` 始终为开启状态。
- codec
我认为在.psqlrc中设置set autocommit = off只适用于旧版本。 - Kjetil S.
在Postgres 14上运行得非常好。谢谢! - Binita Bharati
显示剩余2条评论

2
使用以下在 psql 上的命令,您可以检查 AUTOCOMMIT 是否为 onoff。* AUTOCOMMIT 必须是大写:
\echo :AUTOCOMMIT

如果AUTOCOMMIT开启:

postgres=# \echo :AUTOCOMMIT
on

如果AUTOCOMMIT关闭,则如下所示:
postgres=# \echo :AUTOCOMMIT
off

0

一个快速而不太规范的方法是执行 commit; 并查找以下消息以推断是否启用了自动提交。

错误报告 - SQL 错误: 当启用 autoCommit 时无法提交。

注意:我使用的是 SQL Developer,所以不确定其他 IDE 是否适用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接