[英]Spring Data JPA app coonection to Google Cloud Run Postgres
Google 有一個從Spring JPA/Boot App連接 Cloud SQL-MYSQl 的示例(使用了提交 9ecdc1111e3da388a750ace41a125287d9620534)。 該示例使用 Spring 數據並與 MySQL 一起正常工作。但是當配置文件更改為 postgress 時它不起作用(在同一帳戶中啟動正確的 Postgres 數據庫並在#2中執行相同的步驟之后)
spring.profiles.active=postgres
並更換
<artifactId>spring-cloud-gcp-starter-sql-mysql</artifactId>
with
<artifactId>spring-cloud-gcp-starter-sql-postgresql</artifactId>
和
replacing src/main/resources/application-mysql.properties
with
src/main/resources/application-postgres.properties
但應用程序仍然失敗
在 class 路徑資源 [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class] 中定義名稱為“entityManagerFactory”的 bean 創建時出錯:調用 init 方法失敗; 嵌套異常是 org.hibernate.service.spi.ServiceException:無法創建請求的服務 [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]
我找不到任何樣本。
application-postgres.properties 附加有
spring.profiles.active=postgres
spring.cloud.gcp.sql.instance-connection-name= xyzprj:us-central1:postgres-instance
spring.datasource.username=xyzuser
spring.datasource.password=password
application-postgres.properties 替換如下
spring.datasource.username=xyzuser
spring.datasource.password=passord
spring.sql.init.mode=always
spring.cloud.gcp.sql.database-name=petclinic
spring.cloud.gcp.sql.instance-connection-name=xyzprj:us-central1:postgres-instance
后來這兩個屬性文件也被更改,以便
spring.datasource.username=root
和
spring.datasource.password=root
但在 Google Cloud 中的 Cloud Shell 上嘗試了相同的問題示例,
gcloud auth 應用程序-默認登錄
您正在 Google Compute Engine 虛擬機上運行。 與此虛擬機關聯的服務憑據將自動由應用程序默認憑據使用,因此無需使用此命令。
如果您決定繼續,您的用戶憑據可能會被有權訪問此虛擬機的其他人看到。 您確定要使用您的個人帳戶進行身份驗證嗎?
你想繼續嗎(是/否)? n
錯誤:(gcloud.auth.application-default.login)被用戶中止。
我試圖在我這邊重現該問題,但我能夠成功部署應用程序
這是我遵循的步驟
第 1 步:使用以下命令創建postgresql
gcloud sql instances create postgres-instance \
--database-version=POSTGRES_13 \
--cpu=1 \
--memory=4GB \
--region=us-central \
--root-password=root
Step2:使用創建數據庫
gcloud sql databases create petclinic --instance postgres-instance
Step3:連接到PostgreSQL實例,驗證連接是否建立
gcloud sql connect postgres-instance
第 4步:像在application.properties
中一樣替換以下內容
spring.profiles.active=postgres
並更換
<artifactId>spring-cloud-gcp-starter-sql-mysql</artifactId>
with
<artifactId>spring-cloud-gcp-starter-sql-postgresql</artifactId>
和
replacing src/main/resources/application-mysql.properties
with
src/main/resources/application-postgres.properties
Step5:除以上改動外
在application.properties
替換
spring.cloud.gcp.sql.instance-connection-name= POSTGRESQL_CONNECTION_NAME
在src/main/resources/application-postgres.properties
添加
spring.datasource.username=USERNAME
spring.datasource.password=PASSWORD
在pom.xml
文件中添加以下依賴
<dependency>
<groupId>com.google.cloud.sql</groupId>
<artifactId>postgres-socket-factory</artifactId>
<version>1.1.0</version>
</dependency>
在build.grable
文件中添加
dependencies {
compile 'com.google.cloud.sql:postgres-socket-factory:1.1.0'
}
注意:運行gcloud auth application-default login
以訪問默認憑據以與Cloud Sql API
有關清楚的信息,請查看此文檔
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.