Google Cloud Datastore模拟器-gcloud beta模拟器数据存储启动无法创建local_db.bin

时间:2019-04-01 06:19:30

标签: google-cloud-platform google-cloud-datastore gcloud google-cloud-sdk datastore-mode-emulator

我已经在Windows下安装了Google Cloud SDK,并且正在Powershell中运行命令(以管理员身份运行)。

我已运行以下命令以确保所有Google Cloud SDK组件均已更新:

gcloud component update

然后我设置数据存储模拟器主机域和一个项目ID,如下所示:

set DATASTORE_EMULATOR_HOST=localhost:8081
set DATASTORE_PROJECT_ID=project-id

然后使用以下命令运行Google Cloud Datastore Mode Emulator

gcloud beta emulators datastore start

这是为了创建文件local_db.bin,该文件提供对数据的本地访问。当我运行命令时,在终端(Powershell,以管理员身份运行)中收到一条消息,提示将在以下位置创建文件:

C:\ Users \ myUserName \ AppData \ Roaming \ gcloud \ emulators \ datastore \ WEB-INF \ appengine-generated \ local_db.bin

未创建文件,并且没有有用的错误信息。我已完成以下操作:

  • 使用gcloud auth list检查了gcloud SDK可用的凭据帐户列表
  • 确保我使用目标帐户,gcloud auth login 'accountName'并使用Google登录名登录

如何获取有关错误原因的其他信息?我还能尝试什么?

1 个答案:

答案 0 :(得分:2)

创建local_db.bin不会失败。它仅表示数据库为空。如果在服务器运行时打开浏览器并导航到http://localhost:8081,则可以验证一切正常。您应该收到一条ok消息作为响应。

Running the Datastore mode Emulator > Emulator data directories文档的部分所述,“ 要清除local_db.bin文件的内容,请停止模拟器并手动删除该文件。”。这意味着您将通过这种方式清除数据库的所有内容。

我已经尝试过文档,实际上乞求时缺少文件local_db.bin。但是,在数据库中添加了一些数据之后,就生成了文件。通过创建基于Google GitHub samples的Python应用程序,我设法做到了。

注意:我还建议您在自己的指定目录(而不是默认目录)中启动模拟器,以确保拥有该目录的所有权限。例如为此,请按照以下步骤操作:

  1. 在桌面内创建一个名为Datastore_Emulator的目录
  2. 执行命令:$ gcloud beta emulators datastore start --data-dir=C:\Users\[USERNAME]\Desktop\Datastore_Emulator\
  3. 这将创建一个空目录C:\Users\[USERNAME]\Desktop\Datastore_Emulator\WEB-INF\appengine-generated\
  4. 例如,现在创建一个Python脚本,向数据库中添加一些数据,然后将生成local_db.bin文件。

更新

您参考的文档是Windows下的命令,用于命令提示符。 &&不支持在Power Shell中链接命令,但是您需要使用;。有关更多信息,请参阅此Stackoverflow answer

此外,Power Shell不支持命令gcloud beta emulators datastore env-init > set_vars.cmd && set_vars.cmd,因为在运行该命令时,生成的set_vars.cmd文件可能会遇到问题。将来建议使用命令提示符来执行Google文档中提到的命令。