从 Intellij 的数据库导航器插件连接到 GCloud 扳手模拟器实例



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

在数据库导航器中,我创建了一个新的Generic连接,并将其配置为使用谷歌云扳手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.prop,ApplicationName 中发现无效属性

有人使用谷歌云扳手jdbc驱动程序成功地将Intellij的数据库导航器连接到云扳手模拟器吗?

您的设置和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驱动程序中修复这个问题。

Spanner JDBC驱动程序现在支持布尔连接属性lenient来忽略未知属性。设置lenient=true将强制Spanner JDBC驱动程序忽略连接URL中的未知属性。

参考-https://github.com/googleapis/java-spanner-jdbc/blob/main/README.md#advanced-属性

最新更新