0

使用 inet、多个主键和集合创建表失败。语法是正确的。

错误消息对主键(不匹配的括号)没有意义。删除它,我了解到除了某些情况外,inet 将无法工作。

我做错了什么,或者不了解使用 CQL3(接口或语法)?

CREATE TABLE session (
  'user_id' bigint,
  'admin_id' bigint,
  'session_id' varchar,
  'cache' text ,
  'created' timestamp ,
  'hits' list<timestamp>, 
  'ip' inet  , 
  PRIMARY KEY ( 'session_id' , 'user_id' )  
  );

以下也失败了

CREATE TABLE 'session' (
  'user_id' bigint,
  'session_id' varchar,
  PRIMARY KEY ( 'session_id' , 'user_id' )  
  );

这有效

CREATE TABLE 'session' (
  'user_id' bigint,
  'session_id' varchar PRIMARY KEY 
  );

线索

>help TYPES

    CQL types recognized by this version of cqlsh:

      ascii
      bigint
      blob
      boolean
      counter
      decimal
      double
      float
      int
      text
      timestamp
      uuid
      varchar
      varint

DSE 3.0.x

[编辑] - 原来 DSE 安装了 Cassandra 1.1.x。

4

1 回答 1

-1

TL;DR:集合(CQL3 的一部分)在 DSE 3.0.x 中尚不可用

同样值得注意,但与我的问题无关:

即使在 Datastax 社区版中 - 也需要激活 CQL3。文档说它应该在 cqlsh 中默认激活

http://www.datastax.com/docs/1.2/cql_cli/using_cql

“激活 CQL 3 您可以通过以下方式之一激活 CQL 模式:

  • 使用 DataStax Java 驱动程序通过
  • 本机/二进制协议。启动 cqlsh,一个基于 Python 的命令行客户端。
  • 使用 set_sql_version Thrift 方法。
  • 在对 Python 驱动程序的 connect() 调用中指定所需的 CQL 模式:*connection = cql.connect('localhost:9160', cql_version='3.0')*

那里的文档也不正确,应该是

con = cql.connect('localhost', cql_version='3.0.0')

此外,Enterprise Opcenter 还不支持 DSE 中的 CQL 3。

 cqlsh --cqlversion=3
于 2013-06-22T06:27:04.397 回答