如果我的配额已过期,如何清除数据存储?

时间:2013-03-21 14:31:14

标签: java google-app-engine

我已部署了Google应用,我想清理数据库(并在清理之前将其转储)。问题是我克服了“数据存储读操作”的配额。 当我尝试通过数据存储管理页面转储数据库时,我坚信我达到了配额。所以不要真正“使用”我的应用程序。

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

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

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

我不想放弃我的数据库,我不想付钱,我想设置空间。

任何?

2 个答案:

答案 0 :(得分:2)

删除使用配额,因为它需要更新数据存储区索引。 通过数据存储管理页面转储数据库需要配额,因为您正在使用读取操作。 在应用引擎领域,这些操作仍被视为“使用”数据存储区。

您使用datstore执行的任何操作都将使用读取或写入操作。

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

答案 1 :(得分:2)

您的数据库配额每天都会重新填充,因此您可以使用简单的

编写每日cron作业
db.delete(YourModel.all(keys_only=True))

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

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