这是我在Cloud SQL google小组讨论论坛上提出的一个重复问题:https://groups.google.com/forum/#!主题/谷歌云sql讨论/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套接字连接到云SQL实例[xxxxxxxxx]。十一月2018年13日下午2:53:49 com.google.cloud.sql.core.SslSocketFactorygetInstance
信息:第一个云SQL连接,正在生成RSA密钥对。11月13日,2018下午2:53:51 com.google.cloud.sql.core.SslSocketFactoryfetchInstanceSslInfo
信息:正在获取云SQL实例[xxxxxx]的临时证书。2018年11月13日下午2:53:54 com.google.cloud.sql.core.SslSocketFactory创建和配置套接字
信息:正在连接到IP[xxxxxxx]上的云SQL实例[xxxxxxxx]org.postgresql.util.PSQLException:连接到谷歌:5432被拒绝。检查主机名和端口是否正确,邮政局长正在接受TCP/IP连接。
我相信我在这里做每件事。有人能帮我吗?
最后,这是一个防火墙问题。我无法从防火墙内部访问3307端口,这是Cloud SQL Proxy使用的端口。我相信Java SocketFactory库也需要使用该端口