Postgres - dblink_connect 如何设置超时

Postgres - dblink_connect how to set timeout

我在 postgres 函数中使用 dblink_connect,如下所示:

select dblink_connect('gw', 'dbname=databasename port=5432 host=RemoteIP user=username password=pass');

当远程服务器宕机时,这个dblink_connect需要很长时间才能return

"ERROR: could not establish connection".

我需要尽快为这个 dblink_connect 到 return 错误设置超时。

我试过这样的事情:

begin;
SET session statement_timeout to 5000;
select dblink_connect('gw', 'dbname=databasename port=5432 host=RemoteIP user=username password=pass');
commit;

但没有成功。

知道我可以设置超时吗?

您需要在连接字符串中指定connect_timeout:

 dblink_connect('gw', 'connect_timeout=2 dbname=databasename port=5432 host=RemoteIP user=username password=pass')

虽然是阻塞等待连接,但处于无法中断的状态,这就是为什么statement_timeout不起作用的原因。