非EQ关系错误Cassandra-如何修复主键?
我创建了一个表posts。当我发出请求时,请选择:非EQ关系错误Cassandra-如何修复主键?,cassandra,cassandra-2.0,cassandra-cli,Cassandra,Cassandra 2.0,Cassandra Cli,我创建了一个表posts。当我发出请求时,请选择: return $this->db->query('SELECT * FROM "posts" WHERE "id" IN(:id) LIMIT '.$this->limit_per_page, ['id' => $id]); 我得到一个错误: 无法限制主键列“id”(前一列 “post_at”不受限制或受非EQ关系限制) 我的表格转储是: CREATE TABLE posts ( id uuid,
return $this->db->query('SELECT * FROM "posts" WHERE "id" IN(:id) LIMIT '.$this->limit_per_page, ['id' => $id]);
我得到一个错误:
无法限制主键列“id”(前一列
“post_at”不受限制或受非EQ关系限制)
我的表格转储是:
CREATE TABLE posts (
id uuid,
post_at timestamp,
user_id bigint,
name text,
category set<text>,
link varchar,
image set<varchar>,
video set<varchar>,
content map<text, text>,
private boolean,
PRIMARY KEY (user_id,post_at,id)
)
WITH CLUSTERING ORDER BY (post_at DESC);
创建表格帖子(
id uuid,
在时间戳处发布_,
用户id bigint,
名称文本,
类别集,
链接varchar,
图像集,
录像机,
内容图,
私有布尔,
主键(用户id、发布地址、id)
)
按聚类顺序排列(描述处的post_);
我读了一些关于主键和集群键的文章,并且理解了当有一些主键时-我需要在中使用操作符=。在我的情况下,我不能使用一个主键。您建议我更改表结构的内容,该错误将消失?我的虚拟表结构
CREATE TABLE posts (
id timeuuid,
post_at timestamp,
user_id bigint,
PRIMARY KEY (id,post_at,user_id)
)
WITH CLUSTERING ORDER BY (post_at DESC);
在插入一些虚拟数据之后
我从id所在的帖子中运行了查询select*(timeuuid1、timeuuid2、timeuuid3)代码>
我使用的是cassandra 2.0和cql 3.0只要试着在主键中交换用户id和id,还可以使用=运算符添加一个具有您知道的值的列,例如clom1和值1这里不是clom1,比如我知道值,所有内容都不同,我可以创建额外的clom1并为每一行添加值1?是的,您必须创建一个具有固定值的列,您可以使用我建议的更改:立即进行查询:return$this->db->query('SELECT*FROM“posts”,其中(:id)LIMIT中的“index\u field”=:index和“id”。$this->LIMIT\u per\u page,['id'=>$id,'index'=>1])
Get error:“语法错误:第1:45行在输入“索引”中没有可行的替代方案”
请,您能用一个例子更详细地回答我吗?谢谢,谢谢,您能检查一下您的查询中是否有工作限制吗?另外,我使用字段用户id作为运算符WHERE。我已经说过了,请尝试使用用户id字段。谢谢。哦,索尔我把自己弄糊涂了。我现在使用查询时会检查你的版本:SELECT*FROM“posts”,其中“id”位于(20b40eb5-4174-4762-a7fe-1ab8299e5da3、627a42e1-64a0-4be8-b307-a012b8a8d889)
在结果查询中,我得到0行,但是在表POST中有相同id的id UUIDI如果您使用cassandra cluster,这可能是一致性问题。还有,为什么表名和列名在引号中?根据文档,布尔数据类型用作字符串