我正在尝试使用 phpcassa libraray 查询 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() 方法创建的 cloumn 族数组中。
当我使用以下代码打印“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”一个,这可能有关联吗?