这是我在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连接。
我相信我正在这里做所有事情。谁能帮我?
答案 0 :(得分:0)
最后,这是一个防火墙问题。我无法从防火墙内部访问端口3307,这是Cloud SQL代理使用的端口。我相信Java SocketFactory库也需要使用该端口。