使用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中的授权列表中指定您的应用。
任何帮助将不胜感激
答案 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的连接。
禁用该设置(默认)也会导致通信链接故障。