我正在玩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.
如果它已经存在,它怎么能不存在?
答案 0 :(得分:1)
我遇到了同样的错误,原因是这是因为DBLink
在公共架构中安装(默认情况下),并且您可能已经将search_path修改为不包含public的列表。数据库虽然包含函数DBlink(text, text)
因此无法找到该函数。
要使其正常工作,您需要在DBlink
函数调用中添加特定架构。
SELECT public.dblink(xxx, yyy);