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

Google Cloud Datastore Emulator - gcloud beta emulators datastore start fails to create local_db.bin

我在 Windows 下安装了 Google Cloud SDK,并且我在 Powershell 中 运行ning 命令(运行ning 作为管理员)。

我已经 运行 以下内容以确保我的所有 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

文件未创建,并且没有有用的错误信息。我做了以下事情:

如何获得有关错误原因的更多信息?我还能尝试什么?

local_db.bin没有创建失败。它只是表明数据库是空的。如果您打开浏览器并导航到 http://localhost:8081,当服务器处于 运行ning 时,您可以验证一切是否按预期工作。您应该会收到一条 ok 消息作为响应。

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

我试过文档,确实文件 local_db.bin 在开始时丢失了。但是,在数据库中添加一些数据后,文件生成了。我设法做到了这一点,方法是基于 Google GitHub samples.

创建一个 Python 应用程序

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

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

更新

您参考的文档,Windows 部分下的命令用于命令提示符。 && 不支持在 Power shell 中链接命令,但您需要改用 ;。有关详细信息,请参阅此 Whosebug answer

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