psql将默认的statement_timeout设置为postgres中的用户

时间:2014-06-07 00:30:07

标签: postgresql

我想为访问postgres数据库设置默认statement_timeout。在配置我的环境变量之后,我现在可以在psql将我登录到我的首选数据库和表中。然而,当我正在探索其中的几个表时,我希望语句超时大约一分钟。这可以通过在每个会话开始时键入SET statement_timeout TO '1min';来完成,但每次输入都是令人讨厌的。我无权访问服务器配置,也不想更改它。理想情况下,我可以对alias psql='psql -c "SET statement_timeout TO '1min';"' except the - c`的效果做一些事情,psql的标志不允许交互式输入。有没有解决这个问题的好方法,或者我总是注定要为每个交互式会话手动设置超时?

2 个答案:

答案 0 :(得分:23)

您可以使用.psqlrc文件(如果您的主目录中没有该文件,则创建该文件;如果您使用Windows而不是*nix,则该文件为%APPDATA%\ postgresql \ psqlrc.conf 代替)并设置以下命令:

set statement_timeout to 60000; commit;

该设置以毫秒为单位,因此将超时设置为1分钟。 .psqlrc -c的{​​{1}}和-X调用不使用psql,因此您可以将交互模式超时时间设置为1分钟。

然后,您可以在psql中执行以下操作以验证配置是否已生效:

show statement_timeout;

答案 1 :(得分:4)

Postgres 允许您在每个角色(用户)级别设置诸如 statement_timeout 之类的配置参数。

ALTER ROLE <your-username> SET statement_timeout = '60s';

此更改将应用​​于该用户的所有新会话,从下次登录开始。

来源:Postgres docs