Структура таблицы:CREATE TABLE posts_user (
post_id bigint,
post_at timestamp,
user_id bigint,
PRIMARY KEY ((post_id), post_at)
)
WITH CLUSTERING ORDER BY (post_at DESC) AND COMPACT STORAGE;
PHP код:<?php
require_once(__DIR__.'/phpcassa/lib/autoload.php');
use phpcassa\Connection\ConnectionPool;
use phpcassa\ColumnFamily;
use phpcassa\SystemManager;
use phpcassa\Schema\StrategyClass;
class Cassandra {
public $c;
function __construct() {
$pool = new ConnectionPool('<b>feed</b>', array('127.0.0.1:9160'));
$this->c = new ColumnFamily($pool, '<b>posts_user</b>');
}
public function insert(){
$num = rand(1, 500);
$this->c->insert($num, array('post_at' => time(), 'user_id' => '1')); //Здесь возникает ошибка при добавлении
//$results = $this->c->get("1");
}
}
?>
Вставка записи через конcоль (успешно была добавлена запись):cqlsh:feed> INSERT INTO posts_user (post_at, user_id, post_id) VALUES (1408827330, 3, 169);
Ошибка в PHP при использовании функции insert():Fatal error: Uncaught exception 'cassandra\InvalidRequestException' in /home/who/public_html/application/libraries/phpcassa/lib/Thrift/Base/TBase.php:206 Stack trace: #0 /home/who/public_html/application/libraries/phpcassa/lib/cassandra/Cassandra.php(3859): Thrift\Base\TBase->_read('Cassandra_batch...', Array, Object(Thrift\Protocol\TBinaryProtocolAccelerated)) #1 /home/who/public_html/application/libraries/phpcassa/lib/cassandra/Cassandra.php(939): cassandra\Cassandra_batch_mutate_result->read(Object(Thrift\Protocol\TBinaryProtocolAccelerated)) #2 /home/who/public_html/application/libraries/phpcassa/lib/cassandra/Cassandra.php(901): cassandra\CassandraClient->recv_batch_mutate() #3 [internal function]: cassandra\CassandraClient->batch_mutate(Array, 1) #4 /home/who/public_html/application/libraries/phpcassa/lib/phpcassa/Connection/ConnectionPool.php(264): call_user_func_array(Array, Array) #5 /home/who/public_html/application/libraries/phpcassa/lib/phpcassa/AbstractColumnFamily.php(686): phpc in /home/who/public_html/application/libraries/phpcassa/lib/Thrift/Base/TBase.php on line 206
Участок кода, где возникла ошибка:// File TBase.php:206
$this->$var = new $class();
// Переменная $class - \cassandra\KsDef187\cassandra\InvalidRequestException
Справка phpcassa:ссылкаБиблиотека phpcassa скачена с ресурса:https://github.com/thobbs/phpcassaУстановленная версия Cassandra:[cqlsh 4.1.1 | Cassandra 2.0.9 | CQL spec 3.1.1 | Thrift protocol 19.39.0]
Возможно, дело в тонкостях Cassandra (кэш, не установленные дополнительные параметры при создании колонки
posts_user), но через консоль запрос сработал. Так же есть предположение, что где-то PHP скрипт долго выполняется и выбивает на исключение. Ко всему, не разобрался для чего параметр
COMPACT STORAGE в
CREATE.
Спасибо заранее всем, кто поможет с данной задачей, потратил много дней, причину не выявил...