2017-02-24 36 views
1

我試圖打開一個JDBC連接到谷歌雲Spanner資料庫,但我得到了以下錯誤消息:錯誤試圖打開一個JDBC連接到谷歌雲扳手時

java.lang.IllegalArgumentException異常:此 服務需要項目ID,但無法從構建器或 環境中確定。請使用構建器設置項目ID。

我的JDBC URL如下:

jdbc:cloudspanner://localhost;Project=project-id;Instance=instance-id;Database=database-name;PvtKeyPath=path-to-key-file 

如果我從URL中移除Project財產,我得到以下異常:

java.sql.SQLNonTransientConnectionException:辛巴] JDBC 連接被拒絕:[Simba] JDBC必需的連接密鑰: Project; [辛巴] JDBC可選連接密鑰(S):語言, 模式

如此看來,司機不去接我的項目ID,但不知何故不接受它。我已經檢查並仔細檢查過我的項目ID是否與我在Google上創建的項目ID相同,我也嘗試將值更改爲項目名稱而不是項目ID,但無濟於事。

有沒有人有可用的URL示例?

編輯:它似乎涉及到私鑰文件的引用。如果我使環境變量GOOGLE_APPLICATION_CREDENTIALS指向我的私鑰文件,則可以成功建立連接。如果我刪除這個環境變量,我會得到上面的異常。

+0

相關:http://stackoverflow.com/questions/42287427/google-spanner-jdbc-connection-strings –

+0

我得到同樣的問題。看來該參數在當前的1.0.4版本中不起作用。 – abhillman

+0

jdbc驅動程序的發行版1.0.6中尚未修復此問題。請嘗試。 –

回答

0

由於Google提供的JDBC驅動程序受到嚴格限制(不支持DML和DDL statemetns),因此我編寫了自己的JDBC驅動程序。該驅動程序旨在與支持JPA/Hibernate的應用程序一起使用。驅動程序可以在這裏找到:https://github.com/olavloite/spanner-jdbc

此驅動程序支持與Google提供的驅動程序相同的URL,包括PvtKeyPath屬性。

1

您正在使用哪個版本的驅動程序?在最新版本中,如果您要在URL中指定憑證文件的路徑,則無需設置GOOGLE_APPLICATION_CREDENTIALS。

+0

我正在使用JDBC驅動程序(Java 8,JDBC 4.2版本)的1.0.4.1005版和Google Cloud Spanner客戶端庫的0.9.3-beta版。 –

+0

此問題現已在1.0.6.1007版中修復。請嘗試。 –