2

我部署了一个谷歌应用程序,我想清理数据库(并在清理之前转储它)。问题是我克服了 "Datastore Read Operations" 的配额。我坚信当我尝试通过 Datastore 管理页面转储数据库时,我达到了配额。所以不是通过真正“使用”我的应用程序。

现在,当我尝试从应用程序中删除所有条目时,出现错误

com.google.apphosting.api.ApiProxy$OverQuotaException: The API call 
datastore_v3.RunQuery() required more quota than is available

如果我尝试浏览到 Datastore Admin,则不会显示任何内容,并且在应用程序设置中出现错误。我有 800k 条目,所以手动操作不是一个选项。

我不想放弃我的数据库,我不想付费,我想释放空间。

任何人?

4

2 回答 2

2

删除使用配额,因为它需要更新数据存储索引。由于您使用的是读取操作,因此通过 Datastore 管理页面转储数据库需要配额。在应用引擎世界中,这些操作仍被视为“使用”数据存储区。

您对 datstore 所做的几乎所有事情都将使用读取或写入操作。

您的选择是付费,或者随着时间的推移慢慢转储和删除,以便您只使用每天拥有的免费操作数量。使用远程 API 编写一个脚本来执行此操作。

于 2013-03-21T18:27:01.390 回答
2

您的数据库配额每天都会重新填充,因此您可以使用简单的方法编写每日 cron 作业

db.delete(YourModel.all(keys_only=True))

让它运行几天。希望它会在一天内尽可能多地删除,并在接下来的几天内完成其余的工作。

除了 cron 作业之外,您还可以通过交互式控制台或 remote_api 或通过应用程序仪表板菜单中的数据库管理员手动执行此操作,您可以在其中选择实体并单击一键删除它们。

于 2013-03-22T00:09:51.190 回答