恢复的 Cassandra 数据库上没有相同的查询 运行

Same query doesn't run on restored Cassandra database

我正在处理 Cassandra 迁移。 我在 Ubuntu 14.04 上构建了一个新的 Cassandra 集群 - Cassandra 2.1.8。数据库已从快照恢复。 源Cassandra集群也是2.1.8版本。

我遇到了这个奇怪的问题。 在原始集群上,我可以 运行 使用 cqlsh 进行查询而不会出现任何错误。 cqlsh 是 5.0.1 版。 SELECT * FROM "featureitems" WHERE "categoryId" = 2 LIMIT 100;

在新集群上,相同的查询抛出错误: InvalidRequest: code=2200 [Invalid query] message="Undefined name categoryId in where clause ('categoryId = 2')"

但是当我删除双引号时 运行 完全没问题 SELECT * FROM featureitems WHERE categoryId = 2 LIMIT 100;

看起来像是一些配置问题,但我不知道去哪里找。在此意义上的任何建议都将受到赞赏。

如果未在双引号中提供,Cassandra 会将所有 column/table/keyspace 名称转换为小写。

因此,如果您需要在 column/table/keyspace 名称中使用大写字符,请使用双引号。

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

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

在您的第二个查询中,categoryId 未包含在双引号中,因此它将被转换为 categoryid...,它出现在 table 中,因此可以正常工作。