我无法将Spring Boot + Spring数据应用程序部署到Google App Engine并让应用程序连接到Google CloudSql(MySQL)数据库。
GAE应用程序和CloudSql实例位于同一个项目中。
我能够运行整个应用并从localhost连接到CloudSql,没有任何问题。
没有数据库连接的Spring Boot在GAE上没有错误地正常工作。添加Spring Data会引发" 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>
在我的研究中,我没有找到任何关于Spring Boot + Spring Data + GAE + CloudSql的好例子或相关问题。
在application.properties文件中连接到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***
答案 0 :(得分:1)
我有同样的问题,在Spring boot application.properties的属性下面为我工作。
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 :(得分:0)
您必须遵循以下步骤:
1)通过转到以下链接启用Cloud SQL API:
2)从https://console.cloud.google.com/apis/credentials/serviceaccountkey
下载服务帐户JSON密钥文件3)使用密钥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]
希望这会有所帮助。