java - 尝试打开与 Google Cloud Spanner 的 JDBC 连接时出错

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

我尝试打开与 Google Cloud Spanner 数据库的 JDBC 连接,但收到以下错误消息:

java.lang.IllegalArgumentException: A project ID is required for this service but could not be determined from the builder or the environment. Please set a project ID using the builder.

我的 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 Connection Refused: [Simba]JDBC Required Connection Key(s): Project; [Simba]JDBC Optional Connection Key(s): Language, Mode

看来驱动程序确实获取了我的项目 ID,但不知何故不接受它。我已经检查并仔细检查过我的项目 ID 是否等于我在 Google 上创建的项目 ID,我还尝试将值更改为项目名称而不是项目 ID,但无济于事。

有人有有效的 URL 示例吗?

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

最佳答案

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

关于java - 尝试打开与 Google Cloud Spanner 的 JDBC 连接时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42443333/

相关文章:

java - 从 JSP 调用 Java 方法时出现内部服务器错误

java - 设置文本格式

java - 获取输入到 HashSet 后的数据读取顺序

java - 我正在使用 jdbc Bolt 库连接到 neo4j 数据库。我的代码通过 main 方法完美运行,但未在 servlet (tomcat) 上运行

google-cloud-platform - 谷歌 bigquery 导出表到谷歌云存储中的多个文件,有时是一个文件

docker - 在Dockerfile中在后台运行服务器

java - Eclipse RCP : list of running plugins

java - 使用ant和Java 1.7编译问题

java.lang.ClassNotFoundException : com. mysql.jdbc.driver 错误,jar 文件已导入

google-app-engine - 无法使用 GCloud CLI 迁移到其他服务版本