【问题标题】:Cassandra CQL INSERT query rejected for unconfigured column familyCassandra CQL INSERT 查询因未配置的列族而被拒绝
【发布时间】:2014-07-09 04:49:41
【问题描述】:

我正在尝试使用 CQL 将一些行插入 Cassandra (1.2.16) 数据库,但 Datastax API 调用被拒绝。查询是通过PreparedStatement 创建的,并使用BoundStatement 执行,就像这样

session.Execute (boundStatement); 
// query is
INSERT INTO "KeyspaceName.ColumnFamilyName" (key, column1, value) VALUES (?, ?, ?)

它被拒绝了

Caught an exception Cassandra.InvalidQueryException: unconfigured columnfamily KeyspaceName.ColumnFamilyName
// which happens at the Execute call above

但是,我可以看到列族确实存在

var cluster = Cluster.Builder ()
    .AddContactPoint ("127.0.0.1")
    .Build ();

new List<string> (cluster.Metadata.GetKeyspaces ()).ForEach ((value) => {
    Console.WriteLine ("Keyspace: " + value);

    new List<string> (cluster.Metadata.GetKeyspace(value).GetTablesNames()).ForEach((tableName) => {
        Console.WriteLine("Table: " + tableName);
    });
});

打印(以及其他)

Keyspace: KeyspaceName
Table: ColumnFamilyName

所以列族就在那里。

为什么 Cassandra 在执行 CQL INSERT 查询时找不到表/列族?这是版本问题吗?我的印象是较新版本的 CQL 将列族称为表。我应该如何配置表?

【问题讨论】:

    标签: c# cassandra cql datastax


    【解决方案1】:

    该异常基本上意味着您尚未创建该列族。您可以检索它,但异常告诉您它正在寻找名为KeyspaceName.ColumnFamilyName 的cf。您必须将“KeyspaceName”和“ColumnFamilyName”放在单独的引号中,否则解析器会认为您只是为列族提供名称。它会将您的查询视为,我想将数据插入名为“KeyspaceName.ColumnFamilyName”的列族中,因此请尝试:

    INSERT INTO "KeyspaceName"."ColumnFamilyName" (key, column1, value) VALUES (?, ?, ?)
                             ^ ^
                             | 
                             This is where the magic happens!
    

    【讨论】:

    • 添加的" 有效。是否需要键空间名称?它可以只是INSERT INTO ColumnFamilyName ...,因为Session 是从键空间名称创建的吗?我试过的时候好像没用。
    • 是的,没有引号,它给出了unconfigured columnfamily columnfamilyname。我想这是规范的一部分。请注意,它可以使用引号但没有键空间名称INSERT INTO "ColumnFamilyName"
    • @SotiriosDelimanolis 是的,它可以只是 cf 名称,但您必须通过 C# 驱动程序的 sessionObj.ChangeKeyspace("KeyspaceName"); 使用特定的 ks
    • 酷。就我而言,我不需要更改键空间,因为我是通过Cluster#Connect(keyspaceName) 获得的。谢谢!
    猜你喜欢
    • 2023-01-10
    • 1970-01-01
    • 1970-01-01
    • 2017-05-20
    • 2013-08-27
    • 2014-09-13
    • 2013-04-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多