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