首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring Boot + Spring Data on GAE with CloudSql - Database Connection

问Spring Boot + Spring Data on GAE with CloudSql - Database Connection
EN

Stack Overflow用户
提问于 2017-05-06 10:39:21
回答 2查看 3.2K关注 0票数 4

我无法将Spring Boot + Spring Data应用程序部署到Google App Engine,也无法让应用程序连接到Google CloudSql (MySQL)数据库。

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

我可以运行整个应用程序并从本地主机连接到CloudSql,没有任何问题。

没有数据库连接的Spring Boot在GAE上工作正常,没有错误。添加Spring Data会抛出"com.mysql.cj.jdbc.exceptions.CommunicationsException:通信链路失败“错误。

在我已经包含的pom.xml中:

代码语言:javascript
复制
<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依赖项:

代码语言:javascript
复制
<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的正确设置是什么?我尝试过以下几种方法,但都抛出了各种错误:

代码语言:javascript
复制
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***
EN

回答 2

Stack Overflow用户

发布于 2017-09-20 12:35:16

我也遇到了同样的问题,下面是Spring boot application.properties中的属性。

代码语言:javascript
复制
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
票数 3
EN

Stack Overflow用户

发布于 2018-07-26 19:08:39

您必须执行以下步骤:

1)打开云SQL API,链接如下:

https://console.cloud.google.com/flows/enableapi?apiid=sqladmin&redirect=https:%2F%2Fconsole.cloud.google.com

2)从https://console.cloud.google.com/apis/credentials/serviceaccountkey下载服务账号JSON密钥文件

3)将该文件路径设置为带有密钥GOOGLE_APPLICATION_CREDENTIALS的环境变量。

代码语言:javascript
复制
 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中添加如下依赖:

代码语言:javascript
复制
 `<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]

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43816133

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档