我正在尝试使用 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 将列族称为表。我应该如何配置表格?
最佳答案
异常基本上意味着您还没有创建该列族。您可以检索它,但异常告诉您它正在寻找名为 KeyspaceName.ColumnFamilyName
的 cf。您必须在单独的引号中包含“KeyspaceName”和“ColumnFamilyName”,否则解析器会认为您只是为列族提供名称。它会将您的查询视为,我想将数据插入名称为“KeyspaceName.ColumnFamilyName”的列族中,因此请尝试:
INSERT INTO "KeyspaceName"."ColumnFamilyName" (key, column1, value) VALUES (?, ?, ?)
^ ^
|
This is where the magic happens!
关于c# - Cassandra CQL INSERT 查询因未配置的列族而被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23768034/