【问题标题】:cassandra-pdo error selecting composite keyscassandra-pdo 选择复合键时出错
【发布时间】:2012-12-28 23:53:09
【问题描述】:

在 PHP 上使用 cassandra-pdo 选择数据时,我在 /var/log/apache2/error.log 中收到以下错误:

[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

有人可以帮忙吗?

【问题讨论】:

  • 仍然没有答案。 CQL 3 它是一个很棒的工具,但是我们不能在 php 中正确使用它... :(
  • 你使用的是哪个 rpc_server_type ?
  • 我正在使用:rpc_server_type:sync
  • 我从未使用过 PDO,但是使用 phpCassa(以及 C++ thrift 绑定)我们不得不删除 setCqlVersion 调用...尝试删除 dsn 中的 cql 3.0.0 部分,也许会发生一些事情...只是在这里猜测。同时更新到 1.2.1 可能会有所帮助。
  • 它也不起作用。我认为 cassandra-pdo 不能真正与完整的 CQL3 一起使用。这一次,我改变了我的方法。我在 tomcat 中使用 datastaxs JavaDriver,使用 php-java-bridge 在 PHP 和 Java 之间进行通信。它工作正常,但需要更多测试。

标签: php pdo cassandra cql3


【解决方案1】:

There is a forkcassandra pdo。我开始使用它。但不确定我是否会完全转向它。我将测试开发人员对我的问题报告的反应。如果不积极维护,我会从 apache 搬回原来的 pdo 并使用 cql2。 希望不要发生,cql3地图类型太有用了。

【讨论】:

  • 好消息!希望这继续保持下去。另一个疑问,连接池在 cassandra-pdo 中是如何工作的?每次运行.php脚本都会重新建立连接?
  • 我不知道你的问题的答案。附言叉子似乎维护得很好,开发人员反应灵敏。这几天我们解决了 CQL3 中对集合类型的支持。结帐项目页面以获取更多信息github.com/mathieu-lornac/YACassandraPDO
猜你喜欢
  • 2014-05-26
  • 2012-07-28
  • 1970-01-01
  • 2019-10-14
  • 2013-09-04
  • 2013-12-31
  • 2015-04-04
  • 2020-01-13
  • 2016-04-08
相关资源
最近更新 更多