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

时间:2014-08-30 09:16:31

标签: cassandra cassandra-2.0 cassandra-cli

我创建了一个表帖子。当我提出请求SELECT:

return $this->db->query('SELECT * FROM "posts" WHERE "id" IN(:id) LIMIT '.$this->limit_per_page, ['id' => $id]);

我收到错误:

  

PRIMARY KEY栏" id"不能限制(前一栏   " post_at"不受限制或非均衡关系)

我的表转储是:

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);

我读了一些关于PRIMARY和CLUSTER KEYS的文章,并且理解,当有一些主键时 - 我需要使用 IN 的运算符 = 。在我的情况下,我不能使用一个PRIMARY KEY。你建议我改变表格结构,那个错误会消失吗?

1 个答案:

答案 0 :(得分:1)

我的虚拟表结构

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);

插入一些虚拟数据后

我运行了查询select * from posts where id in (timeuuid1,timeuuid2,timeuuid3);

我正在使用cassandra 2.0和cql 3.0