【问题标题】:How to query SELECT Then UPDATE in same function如何在同一函数中查询 SELECT 然后 UPDATE
【发布时间】:2020-01-07 23:41:41
【问题描述】:

第二次执行时出现错误

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
    }
}

【问题讨论】:

  • 我看到您正在连接到 127.0.0.1。你只有一个节点吗?如果是这样,您将希望保持 RF=1,并且不要在 ONE 以外的任何地方进行查询。

标签: node.js cassandra


【解决方案1】:

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

被视为原子操作的选择和更新操作也称为比较和设置操作 (CAS),您可以通过 Lightweight transaction. 实现这一点

【讨论】:

    猜你喜欢
    • 2021-11-19
    • 2011-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多