首页 > 解决方案 > 从 Intellij 的 Database Navigator 插件连接到 GCloud Spanner Emulator 实例

问题描述

gcr.io/cloud-spanner-emulator/emulator在我的开发机器上的 Docker 容器中运行。我想从Intellij Database Navigator连接到数据库,这样我就可以看到哪些数据写入了我的表。

在 Database Navigator 中,我创建了一个新的通用连接并将其配置为使用google-cloud-spanner-jdbc驱动程序(版本 1.17.3,从maven获得),使用连接字符串

jdbc:cloudspanner://localhost:9010/projects/my-project/instances/my-instance/databases/main;usePlainText=true

如此所述,但使用了正确的项目、实例和数据库名称。至关重要的是,我已包含此问题中记录usePlainText=true的参数。

当我测试连接时,我收到一条错误消息,上面写着

无法连接到“Spanner Localstack”。INVALID_ARGUMENT:在连接 URI 中发现无效属性:v$session.program, ApplicationName

有没有人使用 google-cloud-spanner-jdbc 驱动程序成功地将 Intellij 的 Database Navigator 连接到 cloud-spanner-emulator?

标签: intellij-ideajdbcgoogle-cloud-spannergoogle-cloud-spanner-emulator

解决方案


您的设置和 JDBC URL 似乎都正常。该问题是由您无法控制的以下组合引起的:

  1. 数据库导航器自动将其添加到连接属性:https ://bitbucket.org/dancioca/dbn/src/d67a09f92b4b9f27e0d1feb91dada9bf0fe802eb/src/com/dci/intellij/dbn/connection/Connector.java?at=master#lines-92
  2. Cloud Spanner JDBC 驱动程序检查它是否只接收已知属性:https ://github.com/googleapis/java-spanner/blob/907ae1ff2f5c0b60510c435f5ba270bd92827104/google-cloud-spanner/src/main/java/com/google/cloud/spanner /connection/ConnectionOptions.java#L602

由于 Cloud Spanner JDBC 驱动程序不知道 Database Navigator 添加的所有属性,它会拒绝连接。我会看看我们是否可以在 JDBC 驱动程序中解决这个问题。


推荐阅读