相同的查询不会在已恢复的Cassandra数据库上运行

时间:2017-06-25 23:09:26

标签: cassandra cassandra-2.0 cql3 cqlsh

我正致力于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}}

看起来有点配置问题,但我不知道在哪里看。在这个意义上的任何建议都表示赞赏。

1 个答案:

答案 0 :(得分:1)

如果没有用双引号提供,Cassandra会将所有列/表/键空间名称转换为小写。

因此,如果您需要在列/表/键空间名称中使用大写字符,请使用双引号。

您可以使用DESC TABLE featureitems命令来描述表格。

在您的第一个查询中,您将categoryId括在双引号中,因此它会查找包含大写字母I的列。

在你的第二个查询中,categoryId没有用双引号括起来,因此它将被转换为categoryid ...它存在于表中并因此起作用。