2016-11-10 53 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

相关问题