【问题标题】:CouchDB - Views not being updated after deleteCouchDB - 删除后视图未更新
【发布时间】:2011-11-11 12:06:01
【问题描述】:

我有一个类似的观点(一个人为的例子):

函数(文档){
如果(doc.attrib){ 发射([doc.attrib],doc._id) }
}

在删除数据之前,一切都按预期进行。我遇到了这种疯狂的场景,实际数据库中没有数据(通过 curl 上运行的 _all_docs 和 _changes 以及 Futon 上的 all_documents 确认)。然而,视图仍然会产生数据(同样在 curl 和 Futon 上)。

删除包括通过 ektorp 进行的批量删除和清除操作。在每次确认这些工作后运行 _changes 都按预期进行。重新创建视图使其反映数据库中文档的真实状态。

我是否在这里遗漏了一些明显的东西,或者 CouchDB 中的视图只是增量的?

【问题讨论】:

  • 我无法复制它,你能提供更多细节吗?您可以使用 curl 重现它并发布使用的命令的确切顺序吗?
  • 总是有“调试即服务”选项。获取一个免费的 Cloud CouchDB 帐户,在其上触发您的错误,然后将问题归咎于他们。他们将竞相 (1) 修复他们的错误,或 (2) 通过向您展示您的错误来向您证明这不是他们的错!

标签: couchdb


【解决方案1】:

您真的 _purge 数据吗?这应该使视图无效并导致完全重建。我会注意到不建议将 _purge 用于正常使用。它仅适用于将明文密码放入文档等意外情况。

不过,您可能在 _purge 中暴露了一个错误,因此如果您可以使用 _purge 可靠地引发此错误,但如果您只是删除则不能,我鼓励您在我们的 JIRA 上提交一张票 (https://issues.apache.org /jira/browse/COUCHDB)。

我还要注意,如果您清除,修复将是删除索引,没有增量方法可能(您实际上是在删除增量方法所需的信息)。

【讨论】:

  • 是的,我确实清除了数据——不是明确地而是通过 ektorp。我可以通过在清除前后运行 _changes 来验证清除是否成功。
  • 关于_purge的使用,如果不建议正常使用,那么删除后视图不应该重建吗?到目前为止,我的经验是每次您从中查询数据时都会重建视图 - 但不是在删除数据之后。
  • 视图仅在查询时更新,但这包括删除已删除的数据。当数据被清除时,有代码可以清除整个索引并重新开始(因为通常不可能逐步清除)。如果您在删除数据后在视图中看到数据,那么这是一个错误,假设您没有使用 stale=ok。
  • 嗨,鲍勃。 +1,这很有启发性。我记得很久以前研究过_purge,我发布了一个替代的total guess答案。
猜你喜欢
  • 2016-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多