You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firestore PITR恢复文档报错:Invalid Transaction 求助

解决Firestore PITR读取早期版本报错问题

先换个实现方式:放弃事务调用

你现在用只读事务来读取指定时间点的文档,但事务的readTime参数存在额外约束(对回溯时间的限制更严格)。直接用文档的get方法指定readTime,大概率能绕过这个错误:

const ref = db.collection('rentals').doc('q5MsBad7ZKM9jP5FbZbJ');
// 直接调用get方法传入readTime,无需事务
const doc = await ref.get({ readTime: new Timestamp(1694362757, 397127000) });

排查PITR实际生效时间

虽然GCS显示有9月4日的数据,但要确认你的Firestore PITR是在9月10日16:19之前就已启用的。如果PITR是在9月10日23:53之后才开启,那该时间点之前的文档版本不会被PITR保留——哪怕GCS有备份,PITR也无法回溯到启用前的时间。

检查文档历史版本

直接在Firebase控制台打开该文档,查看「版本历史记录」,确认9月10日16:19的初始版本是否存在。如果控制台里都看不到这个版本,说明PITR确实没保留该时间点的数据,这时候可以尝试只导出目标集合而非整个数据库:

gcloud firestore export gs://你的存储桶名 --collection-ids=rentals --time=2023-09-10T16:19:17Z

这样只会导出rentals集合,不用处理数百万条的logs表。

内容的提问来源于stack exchange,提问作者Eduard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 05:51:14