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

HuF*_*gPu 6 postgresql dblink

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

当我尝试这个:

SELECT * FROM  dblink('mylink','select someschema.somefunction(''test'', ''ABC'')')
Run Code Online (Sandbox Code Playgroud)

或这个:

SELECT t.n FROM  dblink('mylink', 'select * from someschema.mytable') as t(n text)
Run Code Online (Sandbox Code Playgroud)

我收到错误:

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

以超级用户身份运行。

Rom*_*syk 25

你需要安装一个扩展dblink

create extension dblink;
Run Code Online (Sandbox Code Playgroud)


Vzz*_*arr 6

在我的情况下(也在@HuFlungPu 评论中报告)问题是我最初创建了dblinkinpublic模式。我执行了一个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.
Run Code Online (Sandbox Code Playgroud)

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


Dui*_*lio 6

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

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