2017-06-25 66 views
0

我正在进行Cassandra迁移。 我在Ubuntu 14.04上构建了一个新的Cassandra集群 - Cassandra 2.1.8。数据库从快照中恢复。 源Cassandra集群也是版本2.1.8。相同的查询无法在恢复的Cassandra数据库上运行

我正面临着这个奇怪的问题。 在原始群集上,我可以运行以下使用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;

它看起来像一些配置问题,但我不知道在哪里看。任何意见都表示赞赏。

回答

1

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

所以,如果你需要在列/表/密钥空间名称中使用大写字符,请使用双引号。

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

在第一个查询已包含在双引号categoryId,因此它看起来与资本一

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

+0

我比较了原来的表格定义和新的表格,我可以看到在新的表格名称被转换为小写字母,导致了问题。这是我需要研究的我的表空间创建脚本的问题。 谢谢你的帮助。 – Robert

相关问题