【问题标题】:Spring boot in app engine connection with cloud sql应用引擎中的 Spring Boot 与云 sql 的连接
【发布时间】:2020-05-01 05:46:28
【问题描述】:

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

GCLOUD:java.sql.SQLNonTransientConnectionException:无法连接到 localhost:3,306 上的 MySQL 服务器。 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);

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

【问题讨论】:

  • 我正在使用 HikariConfig config = new HikariConfig();所以它在使用'socketFactory = com.google.cloud.sql.mysql.SocketFactory'时抛出错误(java.lang.NoSuchMethodError)。
  • 你确定你已经创建了一个数据库(不仅仅是一个实例)?

标签: spring-boot google-app-engine google-cloud-sql


【解决方案1】:

我遇到了同样的事情,并且(后来头疼了好几次)找到了一个适合我的解决方案。它归结为 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多