尝试打开与Google Cloud Spanner

时间:2017-02-24 16:14:28

标签: java jdbc google-cloud-platform google-cloud-spanner

我正在尝试打开与Google Cloud 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:[Simba] JDBC   连接被拒绝:[Simba] JDBC所需的连接密钥:   项目; [Simba] JDBC可选连接键:语言,   模式

所以看起来驱动程序确实拿起我的项目ID,但不知何故不接受它。我已检查并仔细检查我的项目ID是否与我在Google上创建的项目ID相同,我也尝试将值更改为项目名称而不是项目ID,但无济于事。

有没有人有一个有效的网址示例?

编辑:它似乎与私钥文件的引用有关。如果我创建指向我的私钥文件的环境变量GOOGLE_APPLICATION_CREDENTIALS,则可以成功建立连接。如果我删除此环境变量,我会得到上述异常。

2 个答案:

答案 0 :(得分:1)

您使用的是哪个版本的驱动程序?在最新版本中,如果您在URL中指定凭证文件的路径,则无需设置GOOGLE_APPLICATION_CREDENTIALS。

答案 1 :(得分:0)

由于Google提供的JDBC驱动程序受到严格限制(不支持DML和DDL状态),我编写了自己的JDBC驱动程序。该驱动程序旨在与支持JPA / Hibernate的应用程序一起使用。可以在此处找到驱动程序:https://github.com/olavloite/spanner-jdbc

此驱动程序支持与Google提供的驱动程序相同的URL,包括PvtKeyPath属性。