此操作不支持一致性级别 LOCAL_ONE。支持的一致性级别有:LOCAL_QUORUM

vir*_*ade 5 amazon-web-services cassandra amazon-keyspaces

我正在使用 AWS keyspaces 并尝试从 C# 插入数据,但收到此错误。“此操作不支持一致性级别 LOCAL_ONE。支持的一致性级别为:LOCAL_QUORUM”。有人可以帮忙吗?

AWS密钥空间

CREATE KEYSPACE IF NOT EXISTS "DevOps"
   WITH REPLICATION={'class': 'SingleRegionStrategy'} ;
Run Code Online (Sandbox Code Playgroud)

桌子

CREATE TABLE IF NOT EXISTS "DevOps"."projectdetails" (
"id" UUID PRIMARY KEY,
"name" text,
"lastupdatedtime" timestamp,
"baname" text,
"customerid" UUID)
Run Code Online (Sandbox Code Playgroud)

C# 代码

 public async Task AddRecord(List<projectdetails> projectDetails)
        {

            try
            {
                if (projectDetails.Count > 0)
                {
                    foreach (var item in projectDetails)
                    {
                        projectdetails projectData = new projectdetails();
                        projectData.id = item.id;
                        projectData.name = item.name;
                        projectData.baname = "Vishal";
                        projectData.lastupdatedtime = item.lastupdatedtime;
                        projectData.customerid = 1;
                        await mapper.InsertAsync<projectdetails>(projectData);
                    }
                }
            }

            catch (Exception e) 
            { 

            }
        }
Run Code Online (Sandbox Code Playgroud)

Ale*_*Ott 5

该错误清楚地表明您需要使用正确的一致性级别LOCAL_QUORUM而不是LOCAL_ONE默认使用的一致性级别。 AWS文档称,对于写入操作,仅支持一致性级别。您可以使用接受CqlQueryOptions的版本InsertAsync来设置一致性级别,如下所示(也许在应用程序初始化期间仅创建查询选项的实例一次):

mapper.InsertAsync<projectdetails>(projectData, 
  new CqlQueryOptions().SetConsistencyLevel(ConsistencyLevel.LocalQuorum))
Run Code Online (Sandbox Code Playgroud)

  • 我对使用 AWS Managed Cassandra 的细微差别感到惊讶。事实上,他们应该将其称为“AWS Nuanced Cassandra”。哈哈 (9认同)
  • 坦率地说,DataStax Astra 也有这样的要求 - 你不能使用 LOCAL_ONE 进行写入...但是如果我没记错的话,驱动程序在检测到它使用安全包时应该自动调整它 (2认同)