为什么 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
。
我已将数据库从 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
。