gpt4 book ai didi

node.js - 如何在同一函数中查询 SELECT 然后 UPDATE

转载 作者:太空宇宙 更新时间:2023-11-03 23:54:42 25 4
gpt4 key购买 nike

第二次执行时出现错误

All host(s) tried for query failed. First host tried, 127.0.0.1:9042: 
ResponseError: Not enough replicas available for query at consistency
QUORUM (2 required but only 1 alive). See innerErrors.

我尝试了很多方法来解决这个问题,但没有任何帮助

我尝试将复制类从 simplestartegy 更改为 networktopologystrategy 并将复制因子更改为 3,但它也不起作用。

这是我的代码main.js:

const cqsql = require('./cqlfunction')
let insert_cassandra = async () => {
try {
let get_id = `SELECT next_id FROM ids WHERE id_name = 'person_id'`
let last_id = await cqsql.cql_getofdb(get_id)
let next_id = last_id[0].next_id
let update_id = `UPDATE ids SET next_id = ${next_id + 1} WHERE id_name =
'person_id' IF next_id = ` + next_id
let result = await cqsql.cql_execute(update_id)
console.log(result);
} catch (error) {
console.log(error);
debugger
process.exit()
}
}
insert_cassandra()

cqlfunction.js:

const cassandra = require('cassandra-driver');
const client = new cassandra.Client({ contactPoints: ['127.0.0.1'], localDataCenter: 'datacenter1', keyspace: 'javafrm'});

exports.cql_getofdb = async (query) => {
try {
// await client.connect()
let result1 = await client.execute(query)
if (result1.rowLength > 0) {
return result1.rows
} else {
return []
}
} catch (error) {
debugger
console.error(error);
return error
}
}

exports.cql_execute = async (query) => {
try {
// await client.connect()
debugger
let result1 = await client.execute(query)
return {}
} catch (error) {
debugger
console.error(error);
return error
}
}

最佳答案

而不是更改 replication ,这将为您的数据库提供弹性,您可能想尝试不同的 consistency水平。

选择和更新操作被视为原子操作,也称为比较和设置操作 (CAS),您可以使用 Lightweight transaction. 来实现。

关于node.js - 如何在同一函数中查询 SELECT 然后 UPDATE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57799234/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com