为什么 Postgres dblink 突然停止工作

Why Postgres dblink stopped working abruptly

我已将数据库从 Oracle 迁移到 RDS Postgres。我在 Oracle 中使用 pragma autonomous_transaction 来记录错误,在错误的情况下发生回滚。由于 Postgres 中没有直接选项,我一直使用 dblink 进行独立提交。

我创建了一个函数,其中 dblink 将在我的测试环境中的不同会话中使用 DML 执行用户定义的函数。通过dblink连接的部分函数如下所述。

Perform * from dblink(connection_string, query_function_call) as p (ret boolean);

现在在开发环境中,我通过管道在Postgres数据库中部署了这个功能,然后我安装了dblink扩展。但是函数在执行时抛出 'dblink does not exist' 错误。我通过重新部署函数解决了这个问题,它工作得很好。

但几天后,突然开始出现'dblink does not exist'错误,这次即使重新部署函数,我也出现同样的错误。

可以在 pg_extension table 中看到扩展,重新启动实例后仍然存在同样的问题。

我还检查了使用 dblink_connect 函数来测试同样 returns 'dblink does not exist' 错误的连接。重新启动数据库实例也没有帮助。

有人可以帮助解释为什么会出现此问题吗?我从基础架构团队那里听说 dblink 不是在 Postgres 中使用的好习惯。非常感谢任何帮助。

很可能您更改了 search_path 以便您只能通过包含架构名称来访问 dblink