Sot*_*lis 2 c# cql cassandra datastax
我正在尝试使用CQL将一些行插入到Cassandra(1.2.16)数据库中,但Datastax API调用被拒绝.查询是通过a创建的,PreparedStatement并执行BoundStatement类似的操作
session.Execute (boundStatement);
// query is
INSERT INTO "KeyspaceName.ColumnFamilyName" (key, column1, value) VALUES (?, ?, ?)
Run Code Online (Sandbox Code Playgroud)
它被拒绝了
Caught an exception Cassandra.InvalidQueryException: unconfigured columnfamily KeyspaceName.ColumnFamilyName
// which happens at the Execute call above
Run Code Online (Sandbox Code Playgroud)
但是,我可以看到列族确实存在
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);
});
});
Run Code Online (Sandbox Code Playgroud)
打印(其中)
Keyspace: KeyspaceName
Table: ColumnFamilyName
Run Code Online (Sandbox Code Playgroud)
所以列系列就在那里.
为什么Cassandra在执行CQL INSERT查询时找不到表/列族?这是版本问题吗?我的印象是,较新版本的CQL将列族引用为表格.我应该如何配置表格?
该异常基本上意味着您尚未创建该列族.但例外是告诉你它寻找一个名叫CF你可以找回KeyspaceName.ColumnFamilyName.您必须在单独的引号中包含"KeyspaceName"和"ColumnFamilyName",否则解析器将认为您只为列族提供名称.它将查看您的查询,我想将数据插入名称为"KeyspaceName.ColumnFamilyName"的列族中,因此请尝试:
INSERT INTO "KeyspaceName"."ColumnFamilyName" (key, column1, value) VALUES (?, ?, ?)
^ ^
|
This is where the magic happens!
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14845 次 |
| 最近记录: |