2017-02-24 63 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版中修复。请尝试。 –