我可以在Cassandra中有一个名称以数字开头的键空间吗?

我可以在Cassandra中有一个名称以数字开头的键空间吗?,cassandra,cql,Cassandra,Cql,所以我读到,其中说键空间名称是32个或更少的字母数字字符和下划线,其中第一个是字母字符。。但是如果我用Cassandra 2.1.2打开cqlsh并这样做: cqlsh>使用replication={'class':'SimpleStrategy','replication_factor':1}创建键空间123abc; 然后,它创建键空间,没有问题,我可以插入和查询数据,没有问题。文档对我撒谎吗?不,文档没有对你撒谎。尝试创建名为123abc的键空间时,出现错误: create keyspac

所以我读到,其中说键空间名称是32个或更少的字母数字字符和下划线,其中第一个是字母字符。。但是如果我用Cassandra 2.1.2打开cqlsh并这样做:

cqlsh>使用replication={'class':'SimpleStrategy','replication_factor':1}创建键空间123abc;


然后,它创建键空间,没有问题,我可以插入和查询数据,没有问题。文档对我撒谎吗?

不,文档没有对你撒谎。尝试创建名为123abc的键空间时,出现错误:

create keyspace 123abc with replication = 
{'class': 'NetworkTopologyStrategy', 'PloetzLabs': '1'};

SyntaxException: ErrorMessage code=2000 [Syntax error in CQL query] 
    message="line 1:28 missing K_WITH at 'replication' 
    (create keyspace 123abc with [replication] =...)"
另一方面,当我像您一样将键空间名称封装在双引号中时,它是有效的。但当我描述我的键空间时,我现在看到的是:

aploetz@cqlsh> desc keyspaces;

system_traces  system  "123abc"  stackoverflow
当我尝试使用该键空间时,事情会变得有趣:

aploetz@cqlsh> use 123abc;

Improper use command.

aploetz@cqlsh> use "123abc" ;
aploetz@cqlsh:123abc> SELECT * FROM 123abc.test1 ;

SyntaxException: <ErrorMessage code=2000 [Syntax error in CQL query] 
    message="line 1:20 mismatched character '.' expecting set null">

aploetz@cqlsh:123abc> SELECT * FROM "123abc".test1 ;

 id  | value
-----+-------
 id1 |  val1

(1 rows)
这些引号不会显示在cqlsh提示符中,但是现在无论何时与该键空间进行交互,您都需要它们

所以从技术上讲,键空间名称中的第一个字符不是数字,而是双引号。因此,可能该文件在某些方面存在漏洞,LOL应理解为:

…第一个字符是字母字符,除非用双引号括起来