我想设置一个默认的statement_timeout
来访问postgres数据库。在配置了我的环境变量之后,我现在有了它,psql
将我记录在我首选的数据库和表上。然而,当我在其中浏览几个表时,我想有一个大约一分钟的语句超时。这可以通过在每个会话开始时键入SET statement_timeout TO '1min';
来完成,但是每次输入都是令人讨厌的。我没有访问服务器配置的权限,也不想改变它。理想情况下,我可以做一些事情来达到alias psql='psql -c "SET statement_timeout TO '1min';"' except the
-c` flag of psql doesn 't allow interactive input的效果。有没有什么好的解决方案来解决这个问题,或者我总是注定要为每个交互式会话手动设置超时?
3条答案
按热度按时间3yhwsihp1#
您可以使用您的
.psqlrc
文件(如果您的主目录中没有,请创建它;如果您使用的是Windows
而不是*nix
,则文件为**%APPDATA%\postgresql\psqlrc.conf**)并设置以下命令:字符串
该设置以毫秒为单位,因此将超时设置为1分钟。
.psqlrc
不用于-c
或-X
对psql
的调用,因此这应该允许您将交互模式超时设置为1分钟。然后,您可以在
psql
中执行以下操作以验证配置是否生效:型
ghg1uchk2#
Postgres允许您在每个角色(用户)级别上设置配置参数,例如statement_timeout。
字符串
从下次登录开始,此更改将应用于该用户的所有新会话。
来源:Postgres docs
zbdgwd5y3#
如果您使用的客户端在后台使用
libpq
(我认为大多数客户端都使用Java和.NET),则可以使用PGOPTIONS
环境变量。字符串
如果您使用URI类型的连接字符串,则可以以相同的格式向
options
URI参数添加选项,只要它们被正确地URI编码(百分比编码)即可。型
当使用关键字-值连接字符串时,可以指定如下选项(需要单引号)
型
此外,连接服务文件(
~/.pg_service.conf
)可能很有用,并遵循与上述配置相同的约定。请参见https://www.postgresql.org/docs/current/libpq-pgservice.html