【问题标题】:How to check if autocommit is on or not postgres' psql如何检查自动提交是否打开 postgres 的 psql
【发布时间】:2016-12-23 09:03:01
【问题描述】:

我正在使用 postgres 9.5。如何检查自动提交是打开还是关闭?我尝试了SHOW AUTOCOMMIT,在那里我得到了ERROR: unrecognized configuration parameter "autocommit",然后我做了一个\set autocommit off,然后SHOW AUTOCOMMIT给了我空白输出。如何识别自动提交是打开还是关闭?我也可以在我的 sql 文件中创建数据库时/之后将其设置为关闭吗?

【问题讨论】:

  • 好问题。自动提交似乎总是打开,当我尝试查看设置时,我也收到了相同的消息。 PG 9.4 至少显示无法将自动提交设置为关闭的文本。但是 9.5 和 9.6 给出了这个错误,尽管文档仍然包含 set 和 show autocommit 命令。
  • 是的,在 postgres 中自动提交默认是开启的。我们可以使用\set AUTOCOMMIT off关闭它

标签: postgresql autocommit


【解决方案1】:

根据thisDustin Marx 的文章,可以使用:

\echo :AUTOCOMMIT

如果希望“始终”禁用自动提交,\set AUTOCOMMIT off 元命令可以添加到本地 ~/.psqlrc 文件。对于更全局的设置,可以放置此元命令 在数据库的系统配置目录中的 apsqlrc 文件中(可以 使用 PostgreSQL 操作系统级命令 pg_config 定位 --sysconfdir)。

【讨论】:

  • 谢谢。永久启动它的最佳位置是什么?在我的应用程序中,我有一个创建数据库的 sql 文件。我应该把它放在那里吗?
  • 我得到了You need to install postgresql-server-dev-X.Y for building a server-side extension or libpq-dev for building a client-side application. pg_config --sysconfdir
  • @love2code:将set 语句放入~/.psqlrc 中,如答案中所述
  • 我确实尝试过。 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 始终处于打开状态。
  • 我猜错误是在 .psqlrc 中使用\set - 它应该是普通的set autocommit = off
【解决方案2】:

一种快速而肮脏的方法是只执行提交;并查找以下消息以推断是否启用了自动提交。

错误报告 - SQL 错误:启用自动提交时无法提交。

注意:我使用的是 SQL 开发人员,因此不确定其他 IDE

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-17
    • 1970-01-01
    • 2013-06-28
    相关资源
    最近更新 更多