使用谷歌云 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";
所以这一切都很好。这是我为产品连接构建的 url。
Class.forName("com.mysql.jdbc.GoogleDriver");
url = "jdbc:google:mysql://<project-id>:<cloud sql instance name>/<database>?user=root";
我从仪表板和实例 ID SQL 实例列表中获得了项目 ID,数据库与非产品值相同,并且由于非产品有效,我相信这没问题
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
您应该在实例的“实例详细信息”中查看“实例连接名称”。对于第二代,它是“project-id:region-name:cloud-sql-instance-name”,而不是第一代中的“project-id:cloud-sql-instance-name”。
关于google-app-engine - 仅从产品连接到 Google Cloud SQL(第二代)时通信链接失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36682217/