【问题标题】:ERROR: function dblink(unknown, unknown) does not exist错误:函数 dblink(未知,未知)不存在
【发布时间】:2018-11-28 21:08:08
【问题描述】:

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

当我尝试这个时:

SELECT * FROM  dblink('mylink','select someschema.somefunction(''test'', ''ABC'')')

或者这个:

SELECT t.n FROM  dblink('mylink', 'select * from someschema.mytable') as t(n text)

我得到错误:

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

以超级用户身份运行。

【问题讨论】:

  • create extension dblink;
  • 谢谢,我已将其作为数据库设置的一部分。而且这个错误仍然会发生。
  • 在同一个数据库上运行?..
  • select * from pg_available_extensions 显示它。
  • 问题是未按预期在公共模式中创建 dblink。所以必须符合 someschema.dblink(...)

标签: postgresql dblink


【解决方案1】:

你需要安装一个扩展 dblink

create extension dblink;

【讨论】:

    【解决方案2】:

    就我而言(正如@HuFlungPu cmets 中所报告的那样),问题是我最初在public 架构中创建了dblink。我执行了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.
    

    在执行SET search_path TO public(其中“public”是创建 dblink 的架构)后,我能够通过 dblink 再次成功查询

    【讨论】:

    • 在我的情况下它甚至不是“公开的”。所以谢谢你!
    • 如何使用python代码安装“创建扩展dblink”?请提出建议。
    • @Hushen dblink 是 Postgres 中提供的一个函数,我不知道你所说的“使用 python 代码安装”到底是什么意思
    【解决方案3】:

    就我而言,问题在于我使用的用户与我用于创建扩展程序的用户不同。

    我使用运行 创建扩展 dblink; 命令

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-09
      • 1970-01-01
      • 2022-11-15
      • 1970-01-01
      • 1970-01-01
      • 2017-08-30
      • 1970-01-01
      相关资源
      最近更新 更多