Google Spanner 模拟器是否可以与 Google Spanner JDBC 驱动程序一起使用?

Does the Google Spanner Emulator work with the Google Spanner JDBC Driver?

我试过这个是 DBeaver and DataGrip

运行 Google Spanner 模拟器本地 (0.8.0)

export SPANNER_EMULATOR_HOST=localhost:9010

Executing: docker run -p 127.0.0.1:9010:9010 -p 127.0.0.1:9020:9020 gcr.io/cloud-spanner-emulator/emulator:0.8.0
[cloud-spanner-emulator] 2020/07/17 22:23:21 gateway.go:135: Cloud Spanner emulator running.
[cloud-spanner-emulator] 2020/07/17 22:23:21 gateway.go:136: REST server listening at 0.0.0.0:9020
[cloud-spanner-emulator] 2020/07/17 22:23:21 gateway.go:137: gRPC server listening at 0.0.0.0:9010

这可以与 Google JDBC Spanner Driver 一起使用吗?

在我的测试中,我的猜测是:

不,目前不支持。

我可以设法连接到 Spanner 的 GCP 实例,但不能连接到模拟器。当我尝试使用端口 9010 或 9020 时,它基本上挂起。

我的jdbc连接字符串如下(项目、实例、数据库都已创建):

gcloud spanner databases list --project=local-project --instance=local-instance --configuration=spanner-emulator --format json

[
  {
    "name": "projects/local-project/instances/local-instance/databases/myDatabase",
    "state": "READY"
  },
]
# 9010
jdbc:cloudspanner://localhost:9010/projects/local-project/instances/local-instance/databases/myDatabase

# 9020
jdbc:cloudspanner://localhost:9020/projects/local-project/instances/local-instance/databases/myDatabase

# just the host
jdbc:cloudspanner://localhost/projects/local-project/instances/local-instance/databases/myDatabase

模拟器不使用 TLS,而 JDBC 驱动程序将默认使用它。您可以通过将 usePlainText 连接 属性 设置为 true 来关闭 JDBC 驱动程序的 TLS。以下连接 URL 应该有效:

jdbc:cloudspanner://localhost:9010/projects/local-project/instances/local-instance/databases/myDatabase?usePlainText=true