我有一个基于Java / Jetty的appengine项目,当通过JDBC与TCP连接使用时,可以成功连接到Google Cloud MySql服务器,但是尝试通过实例名称和JDBC socketFactory进行连接时,BUT无法连接到同一服务器。我在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;
}
问题可能出在您在云mysql实例中指定的公共IP地址。只需在浏览器中键入我的公共IP是什么?即可检查公共IP地址。然后更新为Google云端实例指定的公共IP。这可能有助于解决您的问题。