首页 > 解决方案 > 为什么 Postgres dblink 突然停止工作

问题描述

我已将数据库从 Oracle 迁移到 RDS Postgres。我pragma autonomous_transaction在 Oracle 中用于记录错误,在发生错误时会发生回滚。由于 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表中看到扩展,重新启动实例,但同样的问题仍然存在。

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

有人可以帮助为什么会出现这个问题吗?我从基础设施团队听说 dblink 不是在 Postgres 中使用的好习惯。任何帮助深表感谢。

标签: postgresqlamazon-aurora

解决方案


奇怪的是您更改了您的search_path,因此您只能dblink通过包含架构名称来访问。


推荐阅读