首页 > 解决方案 > 应用程序引擎中的 Spring Boot 与云 sql 的连接

问题描述

尝试将部署在应用引擎标准环境中的 Spring Boot 应用程序与云 MySql 连接会引发以下错误。

GCLOUD:java.sql.SQLNonTransientConnectionException:无法连接到本地主机上的 MySQL 服务器:3,306。GCLOUD:确保在您尝试连接的机器/端口上运行着 MySQL 服务器,并且运行该软件的机器能够连接到该主机/端口(即没有防火墙)。还要确保没有使用 --skip-networking 标志启动服务器。

config.setDriverClassName("com.mysql.cj.jdbc.Driver");
config.setJdbcUrl(String.format("jdbc:mysql:///%s", DB_NAME));
config.setUsername(USER_NAME);
config.setPassword(USER_PW);
config.addDataSourceProperty("socketFactory", "com.google.cloud.sql.mysql.socket.factory.connector.j.8");
String CLOUD_SQL_CONNECTION_NAME = "PROJECTID:REGION:DB_INSTANCE";
config.addDataSourceProperty("cloudSqlInstance", CLOUD_SQL_CONNECTION_NAME);

在这里建议的应用引擎中的“IAM”角色和其他设置。我错过了什么吗?

标签: spring-bootgoogle-app-enginegoogle-cloud-sql

解决方案


我遇到了同样的事情,并且(后来几次头痛)遇到了一个适合我的解决方案。它归结为 pom.xml(对于 maven)中所述的依赖关系。

我正在使用:

<dependency>
    <groupId>com.google.api-client</groupId>
    <artifactId>google-api-client</artifactId>
    <version>1.22.0</version>
</dependency>

我想我是从其他教程中得到的。

相反,用以下内容替换它可以解决问题:

<dependency>
    <groupId>com.google.cloud.sql</groupId>
    <artifactId>mysql-socket-factory</artifactId>
    <version>1.0.16</version>
</dependency>

这是我通过教程视频发现的(本身很有帮助):https ://www.youtube.com/watch?v=mAhah-vq0Iw


推荐阅读