带有CloudSQL-数据库连接的GAE上的Spring Boot Spring数据



我无法将Spring Boot Spring Data应用程序部署到Google App Engine,并将应用程序连接到Google Cloudsql(MySQL(数据库。

GAE应用程序和CloudSQL实例在同一项目中。

我能够运行整个应用程序并从Localhost连接到CloudSQL,没有任何问题。

没有数据库连接的弹簧启动可以正常工作,而GAE上没有错误。添加弹簧数据将" com.mysql.cj.jdbc.exceptions.communicationsexception:通信链接失败"错误。

在pom.xml中我包括:

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>6.0.6</version>
</dependency>
<dependency>
    <groupId>com.google.cloud.sql</groupId>
    <artifactId>mysql-socket-factory</artifactId>
    <version>1.0.2</version>
</dependency>

另外,我尝试仅使用mySQL依赖性:

<dependency>
     <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>6.0.6</version>
</dependency>

在我的研究中,我没有发现春季启动 弹簧数据 GAE CloudSQL的任何好的示例或相关问题。

在应用程序文件中连接到CloudSQL DB的正确设置是什么?我已经尝试了以下操作,但都丢了各种错误:

spring.jpa.hibernate.ddl-auto:none
# tried with GoogleDriver and without:
# spring.datasource.driver-class-name=com.mysql.jdbc.GoogleDriver
# urls configs attempted:
# spring.datasource.url=jdbc:mysql://google/**db-name**?cloudSqlInstance=***instance-name***b&socketFactory=com.google.cloud.sql.mysql.SocketFactory
# spring.datasource.url=jdbc:mysql://***instance-name***/**db-name**?user=root
# spring.datasource.url=jdbc:mysql://localhost:3306/**db-name**
spring.datasource.url=jdbc:mysql://127.0.0.1:3306:3306/**db-name**
# spring.datasource.url=jdbc:mysql://***mysql ip address***:3306/**db-name**
spring.datasource.username=***user***
spring.datasource.password=***password***

我遇到了同样的问题,在春季启动应用程序中的属性下方。

database=mysql
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://google/{db-schema}?socketFactory=com.google.cloud.sql.mysql.SocketFactory&cloudSqlInstance={Cloud-sql-Instance-Name}
spring.datasource.username=root
spring.datasource.password=password

您必须遵循以下步骤:

1(通过以下链接启用云SQL API:

https://console.cloud.google.com/flows/enableapi?apiid=sqladmin&Amp;Redirect = https:///console.cloud.cloud.google.com

2(下载服务帐户JSON密钥文件来自https://console.cloud.google.com/apis/credentials/serviceaceaccountkey

3(将此filepath设置为使用密钥google_application_credentials的环境变量。

 on Windows OS open command prompt and run command: set GOOGLE_APPLICATION_CREDENTIALS=[File path] 
 on Linux OS on console run command : export GOOGLE_APPLICATION_CREDENTIALS=[File path]

4(在pom.xml中添加以下依赖关系:

 `<dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>6.0.6</version>
  </dependency>
  <dependency>
      <groupId>com.google.cloud.sql</groupId>
      <artifactId>mysql-socket-factory</artifactId>
      <version>1.0.2</version>
  </dependency>
  <dependency>
      <groupId>com.google.api-client</groupId>
      <artifactId>google-api-client</artifactId>
      <version>1.23.0</version>
  </dependency>

`

5(在application.properties文件中使用以下属性:

spring.datasource.url=jdbc:mysql://google/[Database-Name]?cloudSqlInstance=[instance-Connection-Name]&socketFactory=com.google.cloud.sql.mysql.SocketFactory&useSSL=false spring.datasource.username=[Database-Username] spring.datasource.password=[Database-Password]

希望这会有所帮助。

相关内容

  • 没有找到相关文章

最新更新