Ошибка cassandra-pdo при выборе составных ключей

Я получаю сообщение об ошибке ниже в /var/log/apache2/error.log при выборе данных с помощью cassandra-pdo на PHP:

[Mon Jan 14 23:37:47 2013] [error] [client 10.0.0.5] PHP Fatal error:  Uncaught exception 'PDOException' with message 'CQLSTATE[08006] [8] No more data to read.' in /var/www/test_cassandra_pdo.php:13\nStack trace:\n#0 /var/www/test_cassandra_pdo.php(13): PDOStatement->execute()\n#1 {main}\n  thrown in /var/www/test_cassandra_pdo.php on line 13

Я использую:

Ниже мой код PHP:

// Connect to two hosts
$dsn = "cassandra:host=cassandra001,port=9160;host=cassandra002,port=9160;cqlversion=3.0.0";
$db = new PDO($dsn);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->exec("USE test");

$stmt = $db->prepare("SELECT page, local, key, vl FROM lalala;");
//$stmt->bindValue(':key', 'a');
$stmt->execute();

$result = $stmt->fetchAll();
var_dump($result);

Ниже представлена ​​структура данных (созданная и перечисленная с помощью cqlsh):

Connected to test at cassandra001:9160.
[cqlsh 2.3.0 | Cassandra 1.2.0 | CQL spec 3.0.0 | Thrift protocol 19.35.0]
Use HELP for help.
cqlsh> use test;
cqlsh:test> describe table lalala;

CREATE TABLE lalala (
page text,
local text,
key text,
value text,
vl text,
PRIMARY KEY (page, local, key)
) WITH
bloom_filter_fp_chance=0.010000 AND
caching='KEYS_ONLY' AND
comment='' AND
dclocal_read_repair_chance=0.000000 AND
gc_grace_seconds=864000 AND
read_repair_chance=0.100000 AND
replicate_on_write='true' AND
compaction={'class': 'SizeTieredCompactionStrategy'} AND
compression={'sstable_compression': 'SnappyCompressor'};

Выбор с использованием cqlsh:

cqlsh:test> SELECT page, local, key, vl FROM lalala;

 page       | local | key   | vl
------------+-------+-------+----------------
 teste.html |    EN | title | Ola, bem vindo

Я открыл проблему с cassandra-pdo, но без возврата:

http://code.google.com/a/apache-extras.org/p/cassandra-pdo/issues/detail?id=15.

Кто-нибудь может помочь?


person marcostrama    schedule 14.01.2013    source источник
comment
По-прежнему нет ответа. CQL 3 - отличный инструмент, но мы не можем правильно использовать его в php ... :(   -  person marcostrama    schedule 20.01.2013
comment
Какой rpc_server_type вы используете?   -  person ElementalStorm    schedule 13.02.2013
comment
Я использую: rpc_server_type: sync   -  person marcostrama    schedule 18.02.2013
comment
Я никогда не использовал PDO, но с phpCassa (а также с привязкой к C +++) нам пришлось удалить вызов setCqlVersion ... Попробуйте удалить часть cql 3.0.0 в dsn, может быть, что-то произойдет ... Просто догадываюсь. А пока может помочь обновление до 1.2.1.   -  person ElementalStorm    schedule 18.02.2013
comment
Это тоже не работает. Я думаю, что cassandra-pdo действительно не работает с полным CQL3. В этот раз я изменил свой подход. Я использую данные JavaDriver в tomcat, используя php-java-bridge для связи между PHP и Java. Он работает, но нужны дополнительные тесты.   -  person marcostrama    schedule 20.02.2013


Ответы (1)


Существует форк cassandra pdo. Я начал им пользоваться. Но не уверен, что полностью перейду к этому. Я буду тестировать, как разработчики реагируют на мои сообщения о проблемах. Если он не будет активно поддерживаться, я вернусь к исходному pdo из apache и буду использовать cql2. Надеюсь, этого не произойдет, тип карты cql3 очень полезен.

person moldcraft    schedule 20.02.2013
comment
Хорошие новости! Надеюсь, это продолжится. Еще одно сомнение, как пул подключений работает в cassandra-pdo? Соединение восстанавливается каждый раз при запуске скрипта .php? - person marcostrama; 21.02.2013
comment
Я не знаю ответа на твой вопрос. P.S. Форк, кажется, находится в очень хорошем состоянии, и разработчики очень отзывчивы. На этот раз мы разрешили поддержку типов коллекций в CQL3. Страница проекта оформления заказа для получения дополнительной информации github.com/mathieu-lornac/YACassandraPDO - person moldcraft; 28.02.2013