我想要有一個列族,我可以讓一個CQL的密鑰獲得一個基於一個密鑰和另一個CQL的行,我有一個使用「 IN「關鍵字並具有ORDER BY子句。我得到的數據來自列值而不是列名。我遇到的問題是試圖設置列家族來實現這一點。我有這個cli命令來創建列族,但是當我去做一個插入時,我得到一個關於主鍵的奇怪異常。以下是創建列族後插入列值時的cli和錯誤。使用CompositeType從客戶端獲取插入錯誤
用於創建列族CLI命令:
create column family video_item_details
with key_validation_class = 'CompositeType(IntegerType,UTF8Type)'
and comparator = 'UTF8Type'
and column_metadata = [
{column_name : key, validation_class: IntegerType, index_type: KEYS}
{column_name : name, validation_class : 'UTF8Type', index_type: KEYS}
{column_name : description, validation_class :'UTF8Type'}
{column_name : url, validation_class : 'UTF8Type'}
{column_name : play_time, validation_class : 'UTF8Type'}
{column_name : type, validation_class : 'UTF8Type'}
]
with caching='ALL';
插入過程中的錯誤是:
錯誤,同時插入com.datastax.driver.core.exceptions.InvalidQueryException:缺少強制PRIMARY KEY部分KEY2
,目前正在試圖執行的INSERT語句是:
INSERT INTO video.video_item_details(key, name, description, url, play_time, type) values
(1,'Gettysburg','Gettysburg Movie Trailer','test','2:53','Streaming')
感謝您提供有關如何讓Cassandra執行此類查詢的任何建議。你似乎
最好的問候, 託尼
謝謝,但卡桑德拉團隊使用CompositeType告訴我這是做到這一點的方法。當我使用CQL創建列族時,我在做關於未知類型的插入時出現錯誤,Cassandra團隊表示使用CQL創建列族不會保留CQL語句中指定的順序,這讓我感到驚訝,所以我訴諸於更好的控制。因此,考慮到這一點,什麼是正確的方式來完成這個插入工作如預期,還有ORDER BY? –
忘了提及我沒有使用DataStax驅動程序來創建我正在使用cli的表。我在插入時使用CQL。 –
我希望cli或存儲引擎級命令的能力可以在CQL級別上使用,因爲DBA和技術潛在客戶喜歡對錶創建進行精細的級別控制。這是我真正想說的。 –