恢复的 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 中,因此可以正常工作。
我正在处理 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 中,因此可以正常工作。