Spring Boot应用程序通过Google Cloud MySQL部署到Heroku



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

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

1(本地应用程序连接是因为我使用'gcloud auth application-default登录'命令和'./mvnw -dskiptests spring-boot:run',因此我连接到Google Cloud Cloud MySQL数据库。

2(当我将IP提供给Google的SQL连接时,该应用程序连接,但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

云SQL JDBC套接字工厂使用应用程序默认凭据(ADC(策略来查找凭据。

您可以使用GOOGLE_APPLICATION_CREDENTIALS环境变量手动提供凭据,以指向服务帐户。您可以在此处找到更多详细说明。

最新更新