【问题标题】:Error when trying to open a JDBC connection to Google Cloud Spanner尝试打开与 Google Cloud Spanner 的 JDBC 连接时出错
【发布时间】:2017-02-24 16:14:28
【问题描述】:

我正在尝试打开与 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,但无济于事。

有人有一个有效的 URL 示例吗?

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

【问题讨论】:

  • 我遇到了同样的问题。从当前的 1.0.4 版本开始,该参数似乎不起作用。
  • jdbc 驱动的 1.0.6 版本中尚未修复此问题。请尝试一下。

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


【解决方案1】:

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

【讨论】:

  • 我使用的是 1.0.4.1005 版的 JDBC 驱动程序(Java 8、JDBC 4.2 版)和 Google Cloud Spanner 客户端库的 0.9.3-beta 版。
  • 此问题现已在版本 1.0.6.1007 中得到修复。请尝试一下。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 2012-06-22
    • 2019-07-07
    • 1970-01-01
    • 1970-01-01
    • 2018-07-11
    相关资源
    最近更新 更多