在 Postgres 中创建指向同一数据库的 db_link

问题描述 投票:0回答:1

我们确实有一个要求,创建db_link(数据库链接)必须引用同一个数据库。

当我查看函数中的代码时。有点像这样。

perform dblink_connect(cn,'loopback'::text);
   cn is the connection name;

我通过使用此查询验证是否有任何名为 Loopback 的外部服务器。但是,没有运气

select 
    srvname as name, 
    srvowner::regrole as owner, 
    fdwname as wrapper, 
    srvoptions as options
from pg_foreign_server
join pg_foreign_data_wrapper w on w.oid = srvfdw;

我怀疑环回指的是同一个数据库。

当我执行该函数时,我收到以下错误

**Error:password is required**

我验证了

db_link extension it's there and dblink_fdw is also there

Environment:Postgres RDS
postgresql amazon-rds dblink
1个回答
1
投票

函数调用应该如下所示:

PERFORM dblink_connect(cn, 'host=loopback user=...');

这是一个普通的 libpq 连接字符串;有关详细信息,请参阅文档

在连接字符串中使用 IP 地址会更明智,例如

host=127.0.0.1 user=...

或者使用域套接字连接,就像这样

host=/var/run/postgresql user=...

(也就是说,如果您的

unix_socket_directories
包含此目录)。

pg_hba.conf
应包含类似

的行
# lockal socket connections
local   all             all                                     trust
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
host    all             all             ::1/128                 trust

如果您需要密码身份验证,请使用

md5
而不是
trust
并在连接字符串中提供密码。

我从未听说过 dblink_fdw ...

© www.soinside.com 2019 - 2024. All rights reserved.