本文介紹了Cloud SQL Postgres找不到適用于JDBC的驅動程序:postgres://google/的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
提前謝謝!
我是GCP新手,正在嘗試使用Cloud SQL Postgres。
我有一個已創建的數據庫,并且希望使用Java或Scala在其中創建/更新/刪除表。
我正在嘗試使用‘com.google.cloud.sql’包中的postgres-Socket-Factory。
但在創建連接時,我收到一個錯誤,
"java.sql.SQLException: No suitable driver found for jdbc:postgres://google/"
以下是我的代碼
def getConnection(url:String) : Connection = {
Class.forName("org.postgresql.Driver")
import java.sql.DriverManager
DriverManager.getConnection(url)
}
Java/Scala客戶端通過什么方式從Cloud SQL訪問數據庫?
按照備注中的說明進行操作并更改URL后是的,該操作有效但失敗
Caused by: java.lang.RuntimeException: Unable to obtain credentials to communicate with the Cloud SQL API
at com.google.cloud.sql.core.SslSocketFactory$ApplicationDefaultCredentialFactory.create(SslSocketFactory.java:600)
at com.google.cloud.sql.core.SslSocketFactory.getInstance(SslSocketFactory.java:147)
at com.google.cloud.sql.postgres.SocketFactory.createSocket(SocketFactory.java:91)
at org.postgresql.core.PGStream.<init>(PGStream.java:62)
at org.postgresql.core.v3.ConnectionFactoryImpl.tryConnect(ConnectionFactoryImpl.java:91)
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:192)
at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49)
at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:195)
at org.postgresql.Driver.makeConnection(Driver.java:454)
at org.postgresql.Driver.connect(Driver.java:256)
... 6 more
Caused by: java.io.IOException: The Application Default Credentials are not available. They are available if running on Google App Engine, Google Compute Engine, or Google Cloud Shell. Otherwise, the environment variable GOOGLE_APPLICATION_CREDENTIALS must be defined pointing to a file defining the credentials. See https://developers.google.com/accounts/docs/application-default-credentials for more information.
at com.google.api.client.googleapis.auth.oauth2.DefaultCredentialProvider.getDefaultCredential(DefaultCredentialProvider.java:98)
at com.google.api.client.googleapis.auth.oauth2.GoogleCredential.getApplicationDefault(GoogleCredential.java:213)
at com.google.api.client.googleapis.auth.oauth2.GoogleCredential.getApplicationDefault(GoogleCredential.java:191)
at com.google.cloud.sql.core.SslSocketFactory$ApplicationDefaultCredentialFactory.create(SslSocketFactory.java:598)
... 15 more
如何解決此故障?
問候,
推薦答案
gcp上的大多數庫使用Application Default Credentials(Adc)策略來處理憑據。這個項目的README提到了這個庫。Cloud SQL JDBC套接字工廠使用這些憑據來根據數據庫對連接進行身份驗證。
最快捷的方法是使用gcloud auth application-default login
,它會將您的個人憑據設置為默認憑據。但是,最安全、最安全的方法是為應用程序創建Service Account,授予它”Cloud SQL Client”IAM角色,并使用GOOGLE_APPLICATION_CREDENTIALS
環境變量將服務帳戶密鑰的位置傳遞給庫。
這篇關于Cloud SQL Postgres找不到適用于JDBC的驅動程序:postgres://google/的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,