【问题标题】:Error occurred while writing a data into CouchDB将数据写入 CouchDB 时发生错误
【发布时间】:2014-08-27 14:55:10
【问题描述】:

我正在尝试从 CouchDB 中删除整个数据,并且我再次尝试使用修改后的 **_id 字段和一些额外的字段 ** 写入相同的数据

但我收到以下错误:

{ '原因' => '文档更新冲突。', '错误' => '冲突', 'id' => 'test_1' }, { '原因' => '文档更新冲突。', '错误' => '冲突', 'id' => 'test_2' },

如何解决错误?

【问题讨论】:

  • 您能否提供完整的 curl 命令列表(或 API 调用,尽管它们不太有用,因为不清楚它们在后台做了什么)?
  • 看起来您在更新时没有通过 _rev...但这只是理论上的,因为您没有向我们提供任何详细信息。
  • 大家好,在我的 Couch DB 中,_id 是主键。如果我更改数据库的主键,它会自动创建一个新的_rev(version)。那为什么我需要通过旧的 _rev ?假设如果我通过旧的_rev,会发生什么或我会得到什么错误?
  • 嗨 WickedGrey,我没有使用 curl 命令。而不是我通过 Perl 脚本使用 HTTP 模块。

标签: database couchdb couchdb-futon couchdb-python couchdb-lucene


【解决方案1】:

在创建新文档“test_1”时,应该有一个同名的文档在您的数据库中已经具有不同的 _rev。 如果您需要更新旧的“test_1”,您需要在更新时提供该文档的_rev。或者,您可以删除“test_1”,然后尝试创建另一个名为“test_1”的文档。 这里的重点是,您应该在更新该文档时提供该文档的最新_rev。

【讨论】:

  • 谢谢@Sanj。现在我明白了。我有一个问题。为了删除特定或整个文档,我在我的代码中设置了这样的 _deleted:true 的 HTTP 内容。这意味着它会从数据库内存中删除还是只是从 GUI 中隐藏数据并将数据保留在屏幕后面?因为我问这个问题的原因是,如果我从数据库中删除特定或整个文档并再次将相同的文档写入该数据库,那么 _rev id 只是从上一个版本 id 更新,而不是从 1 开始。
猜你喜欢
  • 2011-08-27
  • 1970-01-01
  • 2022-01-03
  • 1970-01-01
  • 2020-07-10
  • 1970-01-01
  • 1970-01-01
  • 2013-12-11
  • 1970-01-01
相关资源
最近更新 更多