我正致力于Cassandra迁移。 我在Ubuntu 14.04上构建了一个新的Cassandra集群 - Cassandra 2.1.8。数据库已从快照中恢复。 源Cassandra集群也是2.1.8版本。
我正面临着这个奇怪的问题。
在原始群集上,我可以使用cqlsh运行以下查询而不会出现任何错误。 cqlsh是5.0.1版。
InvalidRequest: code=2200 [Invalid query] message="Undefined name categoryId in where clause ('categoryId = 2')"
在新群集上,同一查询会抛出错误:
SELECT * FROM featureitems WHERE categoryId = 2 LIMIT 100;
但是当我删除双引号时,它运行得很好 {{1}}
看起来有点配置问题,但我不知道在哪里看。在这个意义上的任何建议都表示赞赏。
答案 0 :(得分:1)
如果没有用双引号提供,Cassandra会将所有列/表/键空间名称转换为小写。
因此,如果您需要在列/表/键空间名称中使用大写字符,请使用双引号。
您可以使用DESC TABLE featureitems
命令来描述表格。
在您的第一个查询中,您将categoryId
括在双引号中,因此它会查找包含大写字母I的列。
在你的第二个查询中,categoryId
没有用双引号括起来,因此它将被转换为categoryid
...它存在于表中并因此起作用。