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

时间:2015-04-08 14:03:26

标签: sql postgresql

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

CREATE EXTENSION dblink;

SELECT *  
FROM dblink(('dbname=genesis_admin')::text,
      ('SELECT * FROM user_account')::text);

然后令我惊讶

[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.

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

1 个答案:

答案 0 :(得分:1)

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

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

SELECT public.dblink(xxx, yyy);