【问题标题】:Firebase/ Firestore import Error: (gcloud.firestore.import) Entity too largeFirebase/Firestore 导入错误:(gcloud.firestore.import) 实体太大
【发布时间】:2020-10-02 11:09:51
【问题描述】:

我试图克隆一个 Firestore 数据库。我找到了有关此主题的指南 (https://qrc.ninja/2019/03/20/cloning-firestore-data/),因此我尝试完成本指南中的步骤。

为了导出数据库,我做了以下操作:

gcloud config set project [PROJECT_ID]
gcloud firestore export gs://[BUCKET_NAME]

要导入数据库,我做了以下操作:

gcloud config set project [DESTINATION_PROJECT_ID]
gsutil acl ch -u [RIGHTS_RECIPIENT]:R gs://[BUCKET_NAME]
gcloud firestore import gs://[BUCKET_NAME]/[TIMESTAMPED_DIRECTORY]

最后一步(gcloud firestore import ...)导致了这个错误:

ERROR: (gcloud.firestore.import) Entity too large

我搜索了这个问题,但我只能在这个页面的缓存谷歌结果中找到:https://cloud.google.com/datastore/docs/export-import-entities 上面写着:

导入操作使用目标项目的项目 ID 更新导入数据中的实体键和键引用属性。如果此更新增加了您的实体大小,则可能会导致导入操作出现“实体太大”或“索引条目太大”错误。 为避免任一错误,请导入具有较短项目 ID 的目标项目。

我的项目 ID 如下所示:XX-XXXXX-XXXXXXX。它有 16 个字符长。由于我的项目需要付费计划,因此仅使用较短的名称进行测试并不是免费的。

因此,如果 ID 确实存在问题,或者我是否可以尝试其他方法来克隆我的数据库,我将不胜感激。

更新:我可以通过导出/导入单个集合来克隆数据库。但我的一个收藏中有超过 79000 份文件。当我导出这个大型集合并尝试导入它时,我仍然得到

ERROR: (gcloud.firestore.import) Entity too large

【问题讨论】:

    标签: firebase google-cloud-platform google-cloud-firestore


    【解决方案1】:

    此类问题通常与以某种方式增长超过允许大小的实体有关,并且在尝试恢复数据库(从导出然后导入)时出现问题。鉴于出口没有任何限制,问题出在进口中。项目 ID 不应该对问题做任何事情。

    您可以通过import your data in BigQuery 自己检查较大的实体来检查这一点。 Cloud Datastore 实体应遵守设置的限制here,尤其是实体的大小。实体的大小是以下各项的总和:

    • 密钥大小
    • 属性大小的总和
    • 32 字节

    您可以手动检查每个实体的大小,方法是编写脚本或在 Big Query 中加载数据。实体大小的计算在 URL here 中定义。

    另外,你可以运行命令:

    gcloud datastore operations describe [OPERATION_ID]

    使用导入操作 id 获取更多详细信息。

    我找到了这个Public Issue Tracker。如前所述,这个问题应该通过修改受影响的实体来解决。

    【讨论】:

    • 我可以通过导出/导入单个集合而不是整个数据库来使其工作。为了导出单个集合,我使用了“gcloud datastore export --namespaces="(default)" --kinds="[collectionName]" gs://[bucketName]。这是一个可行的解决方案,只要我的单个集合满足进口的限制。而且做很多进口/出口而不是一个很麻烦。所以我会对如何克隆大型 Firestore 数据库的进一步提示感兴趣。
    • 是的,通过这些操作,您可以避开大型实体。在这里我想澄清一下:在您的帖子中,您分享了 ProjectId 太大时可能出现的错误:"entity is too big" or "index entries too large" 但您面临的错误是ERROR: (gcloud.firestore.import) Entity too large。要解决此问题,您必须确定大于允许的种类/集合,然后删除属性或跳过它们。这将是解决问题的方法。
    猜你喜欢
    • 2016-11-24
    • 2014-05-23
    • 2013-11-23
    • 2021-11-05
    • 2021-04-21
    • 1970-01-01
    • 2022-01-23
    • 2016-08-05
    • 2016-02-10
    相关资源
    最近更新 更多