仅从产品连接到 Google 云 SQL(第二代)时通信 link 失败

Communications link failure when connect to Google Cloud SQL(second gen) only from prod

使用 google 云 sql 设置一个 google 云平台应用程序,在我的生活中,当我 运行来自 google 个服务器的代码。

下面这个例子: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";

所以这一切都很好。这是我正在为产品连接构建的 url。

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

我从仪表板获得了项目 ID 和实例 ID SQL 实例列表,数据库与非产品值相同,并且由于非产品有效,我相信没问题

Product and Instance ID locations I pulled them from

全部部署后我收到错误消息:

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure 最后一个数据包成功发送到服务器是在 0 毫秒前。驱动程序没有从服务器收到任何数据包。

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

如有任何帮助,我们将不胜感激

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

您应该查看实例的 "Instance details" 中的 "instance connection name"。第二代是"project-id:region-name:cloud-sql-instance-name",不是第一代的"project-id:cloud-sql-instance-name"

尝试从 google 云 运行 连接到 GCP SQL 时,不要忘记启用从 google 云连接到 GCP SQL 运行 服务级别设置。

禁用设置(默认)也会导致通信 link 故障错误。