【发布时间】:2020-08-09 21:49:19
【问题描述】:
我有一个基于 Java/Jetty 的 appengine 项目,当使用与 JDBC 的 TCP 连接时成功连接到 Google 云 MySql 服务器,但在尝试通过实例名称和 JDBC socketFactory 连接时无法连接到同一服务器。 我在 GCP 调试控制台中遇到的错误:
“通信链路故障最后一个成功发送到服务器的数据包是在 0 毫秒前。>驱动程序没有收到来自服务器的任何数据包。”
try {
Class.forName("com.mysql.jdbc.GoogleDriver");
String url= String.format("jdbc:google:mysql:///"
+ "MY_DB_NAME" + "?"
+ "cloudSqlInstance=%s&"
+ "socketFactory=%s&"
+ "useSSL=false",
"PROJECT-ID:ZONE:INSTANCE_NAME",
"com.google.cloud.sql.mysql.SocketFactory");
return DriverManager.getConnection(url, USER_NAME, USER_PASSWORD);
} catch (SQLException | ClassNotFoundException e) {
e.printStackTrace();
return null;
}
【问题讨论】:
-
您可以尝试将 GoogleDriver 更改为“com.mysql.jdbc.Driver”吗?错误是在本地发生还是在部署到 GAE 之后发生?另外,我建议您关注how to connect to Cloud SQL from App Engine上的官方文档
-
我更改为“com.mysql.jdbc.Driver”,但仍然没有出现同样的错误。部署到 GAE 时出现错误。
-
在将 url 前缀从“jdbc:google:mysql:”替换为“jdbc:mysql:”后,我设法使其工作
标签: java mysql google-app-engine jdbc