2016-11-10 56 views
0

我嘗試過以前的解決方案herehere。我通過datastax使用cassandra-driver。我的cassandra版本是2.2.8。我在其中創建了keyspace CT_KEYSPACECT_TABLE。我通過cqlsh提示將值插入到CT_TABLE中。以下是檢索行無法完成對任何主機的操作cassandra

from cassandra.cluster import Cluster 
cluster = Cluster() 
session = cluster.connect('CT_KEYSPACE') 
result = session.execute("select * from CT_TABLE") 
print result.attribute, result.value 

繼Python代碼是DESCRIBE CT_KEYSPACE的輸出:

cqlsh> describe ct_keyspace 

CREATE KEYSPACE ct_keyspace WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '1'} AND durable_writes = true; 

CREATE TABLE ct_keyspace.ct_table (
    attribute text PRIMARY KEY, 
    value int 
) WITH bloom_filter_fp_chance = 0.01 
    AND caching = '{"keys":"ALL", "rows_per_partition":"NONE"}' 
    AND comment = '' 
    AND compaction = {'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy'} 
    AND compression = {'sstable_compression': 'org.apache.cassandra.io.compress.LZ4Compressor'} 
    AND dclocal_read_repair_chance = 0.1 
    AND default_time_to_live = 0 
    AND gc_grace_seconds = 864000 
    AND max_index_interval = 2048 
    AND memtable_flush_period_in_ms = 0 
    AND min_index_interval = 128 
    AND read_repair_chance = 0.0 
    AND speculative_retry = '99.0PERCENTILE'; 

以下是我得到的錯誤:

Traceback (most recent call last): 
    File "connection.py", line 4, in <module> 
    result = session.execute("select * from CT_TABLE") 
    File "/usr/local/lib/python2.7/dist-packages/cassandra/cluster.py", line 1998, in execute 
    return self.execute_async(query, parameters, trace, custom_payload, timeout, execution_profile, paging_state).result() 
    File "/usr/local/lib/python2.7/dist-packages/cassandra/cluster.py", line 3781, in result 
    raise self._final_exception 
cassandra.cluster.NoHostAvailable: ('Unable to complete the operation against any hosts', {}) 

任何幫助是很大的讚賞。

回答

1

發生這種情況是因爲您在連接中提供了錯誤的密鑰空間名稱。使用「ct_keyspace」而不是「CT_KEYSPACE」。您可能還記得,在CQL(如您的select語句)中,未加引號的標識符不區分大小寫。但是,在參數傳遞的情況下(如Cluster.connect(<keyspace>))文字不區分大小寫。

如果啓用日誌記錄,則會看到驅動程序不能在連接上設置該密鑰空間。我創建了一張票以改善此場景中的錯誤處理: https://datastax-oss.atlassian.net/browse/PYTHON-665

相關問題