如何让 PostgreSQL DBLink 连接与 JDBC 一起使用?

Posted

技术标签:

【中文标题】如何让 PostgreSQL DBLink 连接与 JDBC 一起使用?【英文标题】:How can I get PostgreSQL DBLink connections to work with JDBC? 【发布时间】:2019-01-17 01:33:12 【问题描述】:

我无法在我的 springboot“java”(实际上是 kotlin)应用程序中获得命名/未命名的 dblink 连接。我正在用 kotlin 编写代码。代码如下所示。

var result = jdbcTemplate.queryForObject<String>("SELECT dblink_connect('myTestConnectionName'," + myCloudServerConnectionString + ");")

println(result)  // prints "OK" meaning that it ran okay I believe.

var result2 = jdbcTemplate.queryForObject<String>("SELECT dblink_get_connections();")

println(result2) // prints "null" meaning there are no dblink connections.

我在 PSQL 和 DBeaver 中手动运行 SQL,它运行良好。当我运行“dblink_get_connections”sql 时,我将看到命名连接。它仅在我的 springboot 应用程序中不起作用。

有谁知道我可以做些什么来修复它?

【问题讨论】:

【参考方案1】:

调用dblink_connect() 需要一个事务。 您的代码打开并立即关闭它。 dblink_get_connections 在另一个事务中执行。 你可以在你的方法中使用@Transactional 来改变这种行为。

【讨论】:

好吧,实际上我最终没有使用 JDBCTemplate,而是在连接变量上使用了 createStatement().executeQuery("my sql query")。成功了!

以上是关于如何让 PostgreSQL DBLink 连接与 JDBC 一起使用?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 postgresql 中创建包含 dblink 的 MVIEW

Postgresql:存储函数中的 dblink

Postgresql:从本地到远程数据库的存储函数中的 dblink

postgresql dblink 使用

postgresql dblink 使用

可以使用 PostgreSQL 类型来定义 dblink 表吗?