【问题标题】:Spring boot App Deploying to Heroku with Google cloud Mysql使用谷歌云 Mysql 部署到 Heroku 的 Spring Boot App
【发布时间】:2019-12-06 02:15:01
【问题描述】:

我有 Spring Boot 应用程序,我想部署 Heroku。但是我在谷歌云上的数据库。 当我部署到本地 tomcat 服务器时,应用程序连接到数据库,但 Heroku 无法连接到数据库。

  • 我的数据源是正确的,因为我从本地应用程序连接到数据库。

1) 本地应用程序连接,因为我使用“gcloud auth application-default login”命令和“./mvnw -DskipTests spring-boot:run”,因此我连接到谷歌云 mysql 数据库。

2) 当我为我的 sql 连接向 google 提供我的 ip 时,应用程序连接但 heroku 没有。在这种情况下,我需要我的 heroku 应用程序的 ip。

Caused by: java.lang.RuntimeException: Unable to obtain credentials to communicate with the Cloud SQL API
    at com.google.cloud.sql.mysql.SslSocketFactory$ApplicationDefaultCredentialFactory.create(SslSocketFactory.java:548)
    at com.google.cloud.sql.mysql.SslSocketFactory.getInstance(SslSocketFactory.java:141)
    at com.google.cloud.sql.mysql.SocketFactory.connect(SocketFactory.java:47)
    at com.mysql.jdbc.SocketFactoryWrapper.connect(SocketFactoryWrapper.java:57)
    at com.mysql.cj.protocol.a.NativeSocketConnection.connect(NativeSocketConnection.java:65)
    at com.mysql.cj.NativeSession.connect(NativeSession.java:152)
    at com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:955)
    ... 82 common frames omitted

【问题讨论】:

    标签: java spring-boot heroku google-cloud-platform google-cloud-sql


    【解决方案1】:

    Cloud SQL JDBC Socket Factory 使用Application Default Credentials (ADC) 策略来查找凭据。

    您可以使用 GOOGLE_APPLICATION_CREDENTIALS 环境变量手动提供凭据以指向服务帐户。你可以找到更多detailed instructions here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-18
      • 2020-11-22
      • 2021-12-21
      • 2022-08-10
      • 2019-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多