错误:函数 dblink(未知,未知)不存在

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

我定义了一个指向另一个数据库的外部服务器。然后我想在该数据库中执行一个函数并返回结果。

当我尝试这个时:

SELECT * FROM  dblink('mylink','select someschema.somefunction(''test'', ''ABC'')')

或者这个:

SELECT t.n FROM  dblink('mylink', 'select * from someschema.mytable') as t(n text)

我收到错误:

错误:函数 dblink(未知,未知)不存在

以超级用户身份运行。

postgresql dblink
4个回答
57
投票

您需要安装扩展dblink

create extension dblink;

8
投票

就我而言(@HuFlungPu 评论中也有报道),问题是我最初在

dblink
模式中创建了
public
。我执行了
SET search_path TO my_schema
,因为我正在处理
my_schema
;所以当查询 dblink 时我收到了

ERROR: function dblink(unknown, unknown) does not exist
HINT:  No function matches the given name and argument types. You might need to add explicit type casts.

执行

SET search_path TO public
(其中“public”是创建dblink的模式)后,我能够通过dblink再次成功查询


6
投票

就我而言,问题是我使用的用户与创建扩展程序时使用的用户不同。

我使用运行该程序的同一用户解决了这个问题 创建扩展dblink; 命令


0
投票

我也面临同样的问题

  1. 检查 dblink(text,text) 函数是否为空,并检查该函数是否正确创建。
  2. 使用此命令 DROP EXTENSION IF EXISTS dblink CASCADE 并重新安装 i;
© www.soinside.com 2019 - 2024. All rights reserved.