当我尝试更新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 值为{ {3}}所以它应该忽略cas验证。
couchbase服务器版本:3.0.1社区版(build-1444)
couchbase-python-client version: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"], couch_doc, persist_to=1, cas=cas)
答案 0 :(得分:0)
从您的代码中看起来就像是在指定cas:
self._connection.replace(couch_doc["id"], couch_doc, persist_to=1, cas=cas)
您是否尝试删除cas
参数?