【问题标题】:Cassandra valid column namesCassandra 有效的列名
【发布时间】:2015-11-14 14:40:31
【问题描述】:

我正在创建一个适用于 mongo 或 cassandra 的 api,因此我使用 '_id' 作为列名。

根据文档,这应该是一个有效的名称:

使用 CQL 创建的键空间、列和表名只能包含字母数字和下划线字符。使用 CQL 创建的用户定义的数据类型名称和字段名称、用户定义的函数名称和用户定义的聚合名称只能包含字母数字和下划线字符。如果您使用字母数字字符或下划线以外的任何字符输入这些对象的名称,Cassandra 将发出无效的语法消息并无法创建对象。

但是,当我运行这个语句时:

CREATE TABLE users(_id: bigint, entires: map<timestamp, text>, PRIMARY KEY(_id));

我返回以下错误:

Invalid syntax at line 1, char 20

是否可以在列名中使用下划线?

【问题讨论】:

    标签: cassandra cql


    【解决方案1】:

    下划线 in 列名?是的。下划线开头的列名?没有。

    来自CREATE TABLE documentation

    有效的表名是由字母数字字符和下划线组成的字符串,它们以字母开头。

    【讨论】:

    • 虽然根据文档它应该是非法的,但它确实有效。请看我的回答
    【解决方案2】:

    您可以创建以下划线开头的列名。使用引号:

    CREATE TABLE users("_id": bigint, entires: map<timestamp, text>, PRIMARY KEY("_id"));
    

    列名将是_id

    虽然你可以,但这并不意味着你应该有这样一个列 - 你需要在每个查询中继续使用引号,这很麻烦:

    SELECT "_id" FROM users;

    【讨论】:

      猜你喜欢
      • 2019-05-02
      • 1970-01-01
      • 1970-01-01
      • 2016-02-17
      • 1970-01-01
      • 1970-01-01
      • 2016-10-06
      • 2012-07-08
      • 2023-03-30
      相关资源
      最近更新 更多