插入具有区分大小写列名称的列族

时间:2013-12-02 16:00:10

标签: cassandra cassandra-2.0

我正在使用以下Cassandra / CQL版本:

[cqlsh 4.0.1 | Cassandra 2.0.1 | CQL规范3.1.1 |节俭协议19.37.0]

我正在尝试将数据插入到具有区分大小写列名的预先存在的CF中。我在尝试插入数据时遇到“未知标识符”错误。

以下是列族的描述方式:

CREATE TABLE "Sample_List_CS" (
  key text,
  column1 text,
  "fName" text,
  "ipSubnet" text,
  "ipSubnetMask" text,
  value text,
  PRIMARY KEY (key, column1)
) WITH COMPACT STORAGE AND
  bloom_filter_fp_chance=0.010000 AND
  caching='KEYS_ONLY' AND
  comment='' AND
  dclocal_read_repair_chance=0.000000 AND
  gc_grace_seconds=0 AND
  index_interval=128 AND
  read_repair_chance=0.000000 AND
  replicate_on_write='false' AND
  populate_io_cache_on_flush='false' AND
  default_time_to_live=0 AND
  speculative_retry='NONE' AND
  memtable_flush_period_in_ms=0 AND
  compaction={'class': 'SizeTieredCompactionStrategy'} AND
  compression={'sstable_compression': 'LZ4Compressor'};

CREATE INDEX ipSubnet ON "Sample_List_CS" ("ipSubnet");

insert语句导致错误:

cqlsh:Sample_KS> INSERT INTO "Sample_List_CS" (key,column1,"fName") VALUES    ('123','1','myValue');
Bad Request: Unknown identifier fName

cqlsh:Sample_KS> INSERT INTO "Sample_List_CS" (key,column1,"ipSubnet") VALUES    ('123','1','255');
Bad Request: Unknown identifier ipSubnet

知道我做错了吗?

1 个答案:

答案 0 :(得分:3)

据我所知,在使用WITH COMPACT STORAGE时,表可能只有一列而不是主键。

引用the manual

  

使用紧凑型存储指令可防止您添加多个   一列不属于PRIMARY KEY。

对于您而言,这意味着您的表格中只能包含以下4列中的一列:

  • 其中 “fname”
  • “ipSubnet”
  • “ipSubnetMask”

(或者,您可以将其中3个添加到主键定义中。)

因此有意义的是,其他三列导致Unknown identifier错误。