我使用的是Couchbase NoSQL DB,但我想任何NoSQL DB都会发生这种情况。这里发生了什么:
我正在检查是否存在特定密钥,并且我正在捕获keyNotFound错误,现在将此密钥添加到数据库中。见代码:
// retrieve the document for this connection_id
db.get(connection_id, function(err, result) {
if (err && err.code === 13) {
// Catched a keyNotFound -> define a new document for the voice connection
var voice_c = {
voice_count: '1',
voice_duration: call_duration,
last_contact: call_start
};
// Add this new Voice_c document for this connection_id to DB
db.add(connection_id, voice_c, function(err, result) {
if (err)
throw err; // whilst adding a new voice connection
});
当我进入db.add步骤时,我收到一个错误"密钥存在(具有不同的CAS值)"即使我之前检查过相同的密钥(并且它不存在),我只是检查了一毫秒的碎片。
我无法在数据Feed中的同一位置复制错误,但第二次更早发生错误,表明它是一个随机事件。我很困惑,除非我的代码中存在一个我不知道的错误,否则会发生这种情况。
没有其他代码在NoSQL DB中运行和更改文档,它们都在我的MBP本地运行。在我开始运行脚本之前,数据库被刷新并且是空的。
我已经在数据Feed中手动检查了它,并且在第一次确实发生了大约50个记录之前确实存在相同的connection_id时。但是在第二个实例中,当connection_id第一次出现时抛出了错误(虽然它稍后出现了大约19000个记录)。非常奇怪,希望有人能帮助我如何避免这个错误。
答案 0 :(得分:0)