仅从prod连接到Google Cloud SQL(第二代)时通信链接失败

时间:2016-04-17 21:04:35

标签: google-app-engine google-cloud-sql

使用google cloud sql设置谷歌云平台应用程序,在我的生活中,当我从谷歌服务器运行代码时,我无法连接到数据库。

遵循此示例:https://cloud.google.com/appengine/docs/java/cloud-sql/?csw=1 我已经正确构建了非生产URL并且可以使用此URL连接到云sql没有问题

Class.forName("com.mysql.jdbc.Driver");
url = "jdbc:mysql://<ip-address>:3306/<database>?user=root";

所以这一切都很好。这是我为prod连接建立的网址。

Class.forName("com.mysql.jdbc.GoogleDriver");
url = "jdbc:google:mysql://<project-id>:<cloud sql instance name>/<database>?user=root";

我从仪表板和实例ID SQL实例列表获得了项目ID,数据库与非prod值相同,因为非prod工作我确信没问题

Product and Instance ID locations I pulled them from

部署完毕后,我收到错误消息:

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:通信链路故障成功发送到服务器的最后一个数据包是0毫秒前。驱动程序未收到来自服务器的任何数据包。

appengine-web.xml确实将use-google-connector-j设置为true,我看到对于第二代云sql,您不需要在云端SQL中的授权列表中指定您的应用。

任何帮助将不胜感激

2 个答案:

答案 0 :(得分:2)

https://cloud.google.com/sql/docs/dev-access#gaev1-csqlv2-connect

您应该查看实例的“实例详细信息”中的“实例连接名称”。对于第二代,它是“project-id:region-name:cloud-sql-instance-name”,而不是像第一代那样的“project-id:cloud-sql-instance-name”。

答案 1 :(得分:0)

尝试从Google Cloud Run连接到GCP SQL时,请不要忘记从Google Cloud Run服务级别设置启用与GCP SQL的连接。

禁用该设置(默认)也会导致通信链接故障。