【问题标题】:Cannot create keyspace with cassandra with php无法使用 cassandra 和 php 创建键空间
【发布时间】:2020-10-31 07:04:00
【问题描述】:

我无法使用 PHP 在 docker 容器下运行的 cassandra 上创建键空间。连接似乎没问题,但我没有创建任何内容。当我运行DESCRIBE keyspaces; 时,我只有默认创建的键空间。

我正在使用thobbs/phpcassa bundle 将 php 与 cassandra 连接起来。 我认为问题似乎出在登录名和密码上。

在这个捆绑包中,我没有找到放置它们的位置。当我连接到 cassandra 容器时,我可以通过此命令进行连接 cqlsh -u cassandra -p cassandra 172.24.0.1 9042

下面是我在 index.php 上的代码

<?php

require 'vendor/autoload.php';

use phpcassa\ColumnFamily;
use phpcassa\ColumnSlice;
use phpcassa\Connection\ConnectionPool;

$servers = array("172.24.0.1:9042");
$pool = new ConnectionPool("Keyspace2", $servers);


$column_family = new ColumnFamily($pool, 'ColumnFamily1');

我可以把我的登录名和密码放在哪里?

【问题讨论】:

    标签: php docker cassandra cqlsh phpcassa


    【解决方案1】:

    请不要使用thobbs/phpcassa——它已经很老了,而且它在底层使用了旧的 Thrift 协议......现在使用 Cassandra 的正确方法是使用 PHP driver from DataStax。那里完全支持身份验证 (doc),如下所示:

    $cluster = Cassandra::cluster()
                   ->withCredentials("username", "password")
                   ->build();
    $session = $cluster->connect();
    

    在你得到$session之后,你可以使用execute函数来执行CQL语句,比如CREATE KEYSPACECREATE TABLE,像这样:

    $session->execute('CREATE TABLE ...')
    

    我建议学习很久以前取代 Thrift 的 CQL(Cassandra 查询语言)。它的好资源是“Cassandra。权威指南”——它的第 3 版最近发布了,freely available from the DataStax site

    【讨论】:

    • 太完美了。它对我有用。现在,我可以从 cassandra 数据库中查询了。
    猜你喜欢
    • 1970-01-01
    • 2013-01-02
    • 1970-01-01
    • 2017-04-28
    • 2015-08-22
    • 2019-03-01
    • 2016-09-18
    • 2019-08-11
    • 2016-12-22
    相关资源
    最近更新 更多