Google Spanner 模拟器 - 任何查询都出现 HTTP 500 错误

Google Spanner Emulator - HTTP 500 error on any query

我昨天安装了一个扳手模拟器,它成功地返回了我的查询结果,比如 gcloud spanner databases list --instance=test-instance

但是自从我重新启动机器后,当我尝试执行数据库列表或与此相关的任何其他查询时,我看到了这个特定的错误。它在每种情况下都返回以下错误-

gcloud spanner databases list --instance=test-instance
ERROR: (gcloud.spanner.databases.list) HttpError accessing <http://localhost:9020/v1/projects/test-project/instances/test-instance/databases?alt=json&pageSize=100>: response: <{'date': 'Fri, 05 Feb 2021 09:18:12 GMT', u'status': 500, 'content-length': '44', 'content-type': 'application/json'}>, content <{"error": "failed to marshal error message"}>
This may be due to network connectivity issues. Please check your network settings, and the status of the service you are trying to reach.

谁能告诉我这可能是什么原因?

注意 - 我尝试使用 CLI 和 Docker 启动模拟器,但 none 有效。我从这两种方法中得到了以下输出,这让我相信模拟器正在正确启动。

gcloud beta emulators spanner start
Executing: docker run -p 127.0.0.1:9010:9010 -p 127.0.0.1:9020:9020 gcr.io/cloud-spanner-emulator/emulator:1.1.1
[cloud-spanner-emulator] 2021/02/05 09:10:41 gateway.go:140: Cloud Spanner emulator running.
[cloud-spanner-emulator] 2021/02/05 09:10:41 gateway.go:141: REST server listening at 0.0.0.0:9020
[cloud-spanner-emulator] 2021/02/05 09:10:41 gateway.go:142: gRPC server listening at 0.0.0.0:9010

更新


根据下面@Hoilong 的回答。重新创建扳手实例工作正常。以下是 运行 重新创建实例的命令 -

gcloud spanner instances delete <name_of_instance>

然后

gcloud spanner instances create <name_of_instance> --config=emulator-config --description="Test Instance" --nodes=1

-

  1. - 将其替换为您为现有实例提供的实例名称。
  2. 模拟器必须在 运行 这些命令之前 运行。您可以参考此文档以找到启动模拟器的不同方法 - https://cloud.google.com/spanner/docs/emulator

模拟器不像本地实例。根据 public 文档:

As the emulator stores data only in memory, it will not persist data across runs.

这里发生的事情是重启后,所有数据(不仅是数据库中存储的数据,还有instance/database)都没有了。您只需重新创建 instance/database.