当我尝试运行以下查询时,我得到以下错误消息,因此我的dblink查询失败。所有的主机,角色,网络连接和用户名都已经正确设置,但它不能工作。
select abc from dblink(
'port=5439 host=some_dbhost.mycompany.com dbname=my_db username=my_user password=<...>',
'select 1 as x') as t1 (abc int);
[2F003] ERROR: password is required详细信息:非超级用户必须在连接字符串中提供密码。
不,有密码。这是怎么呢
这个错误信息完全是误导。
真正的错误是用户名被错误地指定为username
。
正确的形式指定为user
(而db指定为dbname
,很烦人!)
修复方法:
select abc from dblink(
'port=5439 host=some_dbhost.mycompany.com dbname=my_db user=my_user password=<...>',
'select 1 as x') as t1 (abc int);
所以错误应该读作:
argument user missing
unknown argument username specified
而不是这个熬夜到凌晨3点对着天尖叫的事情。