因此,我阅读了https://www.datastax.com/documentation/cql/3.0/cql/cql_reference/create_keyspace_r.html,其中说:“键空间名称是32个或更少的字母数字字符和下划线,其中第一个是字母字符。”。但是,如果我使用Cassandra 2.1.2打开cqlsh并执行以下操作:
cqlsh> create keyspace "123abc" with replication = {'class': 'SimpleStrategy', 'replication_factor': 1};
然后就可以创建键空间了,我可以插入和查询数据了。文件对我说谎吗?
不,文档不是在骗你。当我尝试使用名称创建键空间时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
当我尝试use
该键空间时,事情变得很有趣:
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),应该读为:
...第一个是字母字符,除非用双引号引起来。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句