【问题标题】:CREATE TABLE failing (wrong CQL version)CREATE TABLE 失败(错误的 CQL 版本)
【发布时间】:2013-06-22 06:27:04
【问题描述】:

使用 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

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

【问题讨论】:

    标签: cassandra cql3 datastax-enterprise


    【解决方案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 驱动程序通过以下方式激活 CQL
    • 本机/二进制协议。启动 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
    

    【讨论】:

    • Datastax 企业没有 cql3 ,所以没有集合
    • 添加 cqlsh -3 与 cqlsh --cqlversion=3 相同。它确实加载了 cql3,但仍然不支持集合类型、inet 或多个主键。我的问题不清楚。很抱歉造成混乱。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-08
    • 1970-01-01
    • 2013-04-22
    • 1970-01-01
    • 2018-06-06
    • 1970-01-01
    相关资源
    最近更新 更多