PostgreSQL DBLink:没有函数匹配给定的名称和参数类型

use*_*206 8 sql postgresql

我正在玩DBLINK,我想尝试一下.所以我运行这个简单的查询

CREATE EXTENSION dblink;

SELECT *  
FROM dblink(('dbname=genesis_admin')::text,
      ('SELECT * FROM user_account')::text);
Run Code Online (Sandbox Code Playgroud)

然后让我惊讶

[WARNING  ] CREATE EXTENSION dblink
            ERROR:  extension "dblink" already exists
[WARNING  ] SELECT *  FROM dblink(('dbname=genesis_admin')::text, ('SELECT * FROM user_account')::text)
            ERROR:  function dblink(text, text) does not exist
            LINE 1: SELECT *  FROM dblink(('dbname=genesis_admin')::text, ('SELE...
                                   ^
            HINT:  No function matches the given name and argument types. You might need to add explicit type casts.
Run Code Online (Sandbox Code Playgroud)

如果它已经存在,它怎么能不存在?

Rob*_*kan 2

我遇到了同样的错误,原因是这是因为DBLink(默认情况下)安装在公共模式中,并且您可能已将 search_path 修改为不包含公共的列表)。数据库虽然包含该函数,DBlink(text, text)但无法找到该函数。

要使其正常工作,您需要将特定架构添加到DBlink函数调用中。

SELECT public.dblink(xxx, yyy);
Run Code Online (Sandbox Code Playgroud)