Google 数据流将数据写入 CloudSQL postgres | java.sql.SQLException:无法创建 PoolableConnectionFactory(连接尝试失败。)

问题描述 投票:0回答:1

我正在尝试使用 google dataflow 创建 ETL 管道,将数据写入 CloudSQL postgres 数据库。但我在连接到云 sql 实例时遇到错误。

String jdbcConURL = "jdbc:postgresql://google/<db-name>?cloudSqlInstance=<project-id>:<region>:<instance-name>&socketFactory=com.google.cloud.sql.postgres.SocketFactory";
pipeline
    .apply(
        BigQueryIO.read()
        .fromQuery("select * from <big-query-table>")
        .usingStandardSql()
        .withoutValidation()
    )
    .apply(JdbcIO.<TableRow>write()
    .withDataSourceConfiguration(
        JdbcIO.DataSourceConfiguration
        .create("org.postgresql.Driver", jdbcConURL)
        .withUsername("<username>")
        .withPassword("<password>")
    )
    .withStatement("insert into <sql-table-name> values(?,?,?)")

我收到以下未知主机错误。

java.sql.SQLException:无法创建 PoolableConnectionFactory(连接尝试失败。

java.net.UnknownHostException:谷歌在 java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:220) 在 java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:403) 在 java.base /java.net.Socket.connect(Socket.java:609) 在 org.postgresql.core.PGStream.(PGStream.java:61) 在 org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:121) ... 45 更多

postgresql jdbc google-cloud-dataflow apache-beam
1个回答
0
投票

问题似乎出在

pom.xml
中的依赖版本上。更改为最新版本的
org.postgresql
解决了这个问题。

旧版本

<dependency>
     <groupId>org.postgresql</groupId>
     <artifactId>postgresql</artifactId>
     <version>9.4-1200-jdbc41</version> 
</dependency>

新版本

<dependency>
     <groupId>org.postgresql</groupId>
     <artifactId>postgresql</artifactId>
     <version>42.6.0</version> 
</dependency>
© www.soinside.com 2019 - 2024. All rights reserved.