无法使用Java SocketFactory库连接到Cloud SQL

时间:2018-11-14 18:27:28

标签: google-cloud-platform google-cloud-sql

这是我在Cloud SQL谷歌论坛讨论论坛上提出的重复问题:https://groups.google.com/forum/#!topic/google-cloud-sql-discuss/qYmjvfH0MdI

我正在使用Cloud Dataflow运行一些管道,这些管道使用Cloud SQL作为我的个人帐户中的接收器。执行管道之后,我想与Cloud SQL建立连接以运行delete语句。我无法使用JdbcIO运行删除操作(只能选择并插入)。即使我可以使用JdbcIO连接到Cloud SQL,也无法使用普通的Jdbc连接到它。

下面是我用来连接到我的实例的代码

static void cleanUpPipeline() {
    String jdbcUrl = String.format(
            "jdbc:postgresql://google/%s?cloudSqlInstance=%s"
                + "&socketFactory=com.google.cloud.sql.postgres.SocketFactory",
            "xxxxxx",
            "xxxxxx");

    try {
        Class.forName("org.postgresql.Driver");
        Connection connection = DriverManager.getConnection(jdbcUrl, "xxxxxx", "xxxxxx");
    } catch (SQLException | ClassNotFoundException e) {
        e.printStackTrace();
    }
}

我的pom.xml具有以下依赖性:

<dependency>
    <groupId>com.google.cloud.sql</groupId>
    <artifactId>postgres-socket-factory</artifactId>
    <version>1.0.11</version>
</dependency>

<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <version>42.2.5</version>
</dependency>

我收到的错误是:

  

信息:通过ssl套接字连接到Cloud SQL实例[xxxxxxxxx]。十一月   2018年13月13日下午com.google.cloud.sql.core.SslSocketFactory   getInstance

     

INFO:第一个Cloud SQL连接,生成RSA密钥对。 11月13日   2018年2:53:51 PM com.google.cloud.sql.core.SslSocketFactory   fetchInstanceSslInfo

     

INFO:获取Cloud SQL实例[xxxxxx]的临时证书。   十一月13,2018 2:53:54 PM com.google.cloud.sql.core.SslSocketFactory   createAndConfigureSocket

     

INFO:连接到IP [xxxxxxx]上的Cloud SQL实例[xxxxxxxx]   org.postgresql.util.PSQLException:与google:5432的连接被拒绝。   检查主机名和端口是否正确以及邮局主管   正在接受TCP / IP连接。

我相信我正在这里做所有事情。谁能帮我?

1 个答案:

答案 0 :(得分:0)

最后,这是一个防火墙问题。我无法从防火墙内部访问端口3307,这是Cloud SQL代理使用的端口。我相信Java SocketFactory库也需要使用该端口。