Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firebase/Firestore导入错误:(gcloud.Firestore.import)实体太大_Firebase_Google Cloud Platform_Google Cloud Firestore - Fatal编程技术网

Firebase/Firestore导入错误:(gcloud.Firestore.import)实体太大

Firebase/Firestore导入错误:(gcloud.Firestore.import)实体太大,firebase,google-cloud-platform,google-cloud-firestore,Firebase,Google Cloud Platform,Google Cloud Firestore,我试图克隆firestore数据库。我找到了一个关于这个主题的指南(),所以我试着完成这个指南中的步骤 要导出数据库,我执行了以下操作: 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://[BUC

我试图克隆firestore数据库。我找到了一个关于这个主题的指南(),所以我试着完成这个指南中的步骤

要导出数据库,我执行了以下操作:

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 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导入…)导致此错误:

ERROR: (gcloud.firestore.import) Entity too large
我搜索了这个问题,但我只能在该页面的缓存google结果中找到: 上面写着:

导入操作使用目标项目的项目ID更新导入数据中的实体键和键引用属性。如果此更新增加了实体大小,则可能导致导入操作出现“实体太大”或“索引项太大”错误。 若要避免这两种错误,请使用较短的项目ID导入到目标项目中

我的项目ID如下所示:XX-XXXXX-XXXXXXX。它有16个字符长。由于我需要为我的项目制定一个付费计划,简单地用一个较短的名称进行测试是不会免费的

因此,如果您能提示我ID是否真的是问题所在,或者我是否可以尝试其他方法来克隆我的数据库,我将不胜感激

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

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

这类问题通常与以某种方式超过允许大小的实体有关,当尝试恢复DB(从导出到导入)时,会出现问题。鉴于出口没有任何限制,问题在于进口。项目Id不应该与该问题有任何关系

您可以检查这一点的一种方法是您自己检查和检查较大的实体。云数据存储实体应遵守设置的限制,特别是实体的大小。实体的大小是以下各项的总和:

  • 关键尺寸
  • 属性大小的总和
  • 32字节
您可以通过编写脚本或在大查询中加载数据手动检查每个实体的大小。实体大小的计算在URL中定义

此外,您还可以运行以下命令:

gcloud数据存储操作描述[操作ID]

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


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

我可以通过导出/导入单个集合而不是整个数据库来解决。要导出单个集合,我使用了“gcloud datastore export--namespace=“(默认)”--kinds=“[collectionName]”gs://[bucketName]。这是一个可行的解决方案,只要我的单个集合满足导入限制。而且进行多个导入/导出而不是一个导入/导出很麻烦。因此,我想进一步了解有关如何克隆大型firestore数据库的提示。是的,通过这些操作,您可以避免大型实体。在这里,我想澄清一下:在您的帖子中当ProjectId太大时,u共享了可能的错误:
“实体太大”或“索引项太大”
,但您遇到的错误是
错误:(gcloud.firestore.import)实体太大
。若要解决此问题,必须标识大于允许值的种类/集合,并删除属性或跳过属性。这将是解决此问题的方法。