我无法将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]
希望这会有所帮助。