python – 替换时的Couchbase KeyExistsError

当我尝试更新couchbase中的实体时,我收到以下错误

File "./*/couchbase_repository.py",line 55,in update self.repository.update(group)
self._connection.replace(couch_doc["id"],couch_doc,persist_to=1,cas=cas)
File "/opt/*/virtualenv/lib/python2.7/site-packages/couchbase/bucket.py",line 377,in replace
persist_to=persist_to,replicate_to=replicate_to)
_KeyExistsError_0xC (generated,catch KeyExistsError): <Key=u'*',RC=0xC[The key already exists in the server. If you have supplied a CAS then the key exists with a CAS value different than speci$

问题是我没有在我的代码中指定cas值,因此我没有在couchbase-python-client源代码中指定cas值 – 认的cas值是zero,因此它应该忽略cas验证.

couchbase服务器版本:3.0.1社区版(build-1444)

couchbase-python-client版本:2.0.4

C库的版本:

libcouchbase-dev:amd64 2.5.3-1

libcouchbase2-core:amd64 2.5.3-1

libcouchbase2-libevent:amd64 2.5.3-1

这是调用库的代码

def update(self,obj,cas=0):
        obj.validate()
        couch_doc = self.serializer.serialize_to_database(obj)
        self._connection.replace(couch_doc["id"],cas=cas)

解决方法

从您的代码看,它看起来像你指定cas:

self._connection.replace(couch_doc["id"],cas=cas)

你试过删除cas参数吗?

相关文章

功能概要:(目前已实现功能)公共展示部分:1.网站首页展示...
大体上把Python中的数据类型分为如下几类: Number(数字) ...
开发之前第一步,就是构造整个的项目结构。这就好比作一幅画...
源码编译方式安装Apache首先下载Apache源码压缩包,地址为ht...
前面说完了此项目的创建及数据模型设计的过程。如果未看过,...
python中常用的写爬虫的库有urllib2、requests,对于大多数比...