有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

尝试打开与Google Cloud Paner的JDBC连接时出现java错误

我试图打开与Google Cloud Paner数据库的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\u APPLICATION\u CREDENTIALS,则可以成功建立连接。如果删除此环境变量,则会出现上述异常


共 (2) 个答案

  1. # 1 楼答案

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

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

  2. # 2 楼答案

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