【发布时间】:2014-03-04 09:30:39
【问题描述】:
我正在尝试使用 phpcassa 库查询 Cassandra 2.0.2 服务器。
我执行以下操作:
<?php
require('phpcassa/lib/autoload.php');
use phpcassa\ColumnFamily;
use phpcassa\ColumnSlice;
use phpcassa\Connection\ConnectionPool;
$pool = new ConnectionPool('Cronnection', array('MY_SERVER_IP:9160'));
$conversations = new ColumnFamily($pool, 'conversations');
var_dump( $conversations->get('2521b0f0-8e36-11e3-a489-8f038e859082') );
当我这样做时,我得到一个未捕获的 'cassandra\NotFoundException' 异常。
阅读源代码后,我发现这是因为列族“对话”没有加载到 ConnectionPool::describe_keyspace() 方法创建的列族数组中。
当我使用以下代码打印“describe_keyspace”的结果时,我可以看到只有一个名为 user_profiles 的列族被加载到我的列族数组中。
<?php
require('phpcassa/lib/autoload.php');
use phpcassa\ColumnFamily;
use phpcassa\ColumnSlice;
use phpcassa\Connection\ConnectionPool;
$pool = new ConnectionPool('Cronnection', array('MY_SERVER_IP:9160'));
echo '<pre>';
var_dump($pool->describe_keyspace());
在该键空间中定义了 6 个列族,但 phpcassa 仅列出“user_profiles”; “user_profiles”和其他 CF 的唯一区别是“user_profiles”使用的是“WITH COMPACT STORAGE”属性。
关于如何解决这个问题或为什么会发生这种情况的任何想法?
谢谢!
PS:我通过 cqlsh 使用 CQL3 创建了列族,当我使用 cassandra-cli 进行“描述”时,我看不到我的列族,只有我提到的“user_profiles”列族,这可能有关联吗?
【问题讨论】:
标签: cassandra cql cql3 phpcassa cassandra-2.0