Postgres数据库链接突然停止工作的原因



我已经将一个数据库从Oracle迁移到RDS Postgres。我在Oracle中使用了pragma autonomous_transaction来记录错误,在出现错误时会进行回滚。由于Postgres中没有直接选项,我一直使用dblink进行独立提交。

我创建了一个函数,dblink将在我的测试环境中的另一个会话中使用DML执行用户定义的函数。下面将介绍通过dblink连接的部分功能。

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

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

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

扩展可以在pg_extension表中看到,重新启动了实例,但仍然存在相同的问题。

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

有人能帮助解释为什么会出现这个问题吗?我从基础设施团队那里听说dblink在Postgres中不是一个好的实践。非常感谢您的帮助。

很可能您更改了search_path,因此只能通过包含模式名称来访问dblink

最新更新