非EQ关系错误Cassandra-如何修复主键?

非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,

我创建了一个表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,
  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,这可能是一致性问题。还有,为什么表名和列名在引号中?根据文档,布尔数据类型用作字符串