2017-06-25 114 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

相關問題