spring-boot - 应用程序引擎中的 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”角色和其他设置。我错过了什么吗?
解决方案
我遇到了同样的事情,并且(后来几次头痛)遇到了一个适合我的解决方案。它归结为 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
推荐阅读
- java - javax.net.ssl.SSLHandshakeException:远程主机终止握手,由 java.io.EOFException 引起:SSL 对等体错误关闭
- conv-neural-network - 如何用更深的层特征图添加上一层特征图?
- jquery - 引导手风琴问题标题
- python - 从 mysql 数据库中获取图像并在烧瓶网站上显示它们
- spring - Spring Kotlin @ConfigurationProperties 用于依赖项中定义的数据类
- elasticsearch - fluent.conf 中的 time_format 配置
- reporting-services - SSRS - 具有 3 个值的条形图 - (一个条应突出显示 2 个值,其余一个在另一个条上)
- vue.js - Vue中导航项的可滚动下拉菜单
- angularjs - 如何在不同的环境中跟踪发布号
- javascript - passport-jwt 错误 401(未经授权)我该如何解决?