gpt4 book ai didi

Cassandra 没有检索到正确的整数值

转载 作者:行者123 更新时间:2023-12-03 22:42:06 25 4
gpt4 key购买 nike

我正在使用 cql 3.0.0

我已经执行了查询:

INSERT INTO emp (empID, deptID, first_name, last_name)
VALUES (104, 15, 'jane', 'smith')

在检索此记录时,我得到以下值:

empid = h
deptid = (blank value)
first_name = 'jane'
last_name = 'smith'

一查,发现h相当于utf-8字符104,而且utf-8中的15是空的。(引用链接:http://www.utf8-chartable.de/unicode-utf8-table.pl?utf8=dec&unicodeinhtml=dec)

我在创建表期间将列类型设置为 int,但在检索时我没有获得 int 值。

如何获取要检索的正确值。我不想要 utf-8 值。

谢谢

我正在使用 Cassandra 1.2.4

下面是我用 phpcassa 写的代码:

require_once(__DIR__.'/../lib/autoload.php');

use phpcassa\Connection\ConnectionPool;
use phpcassa\ColumnFamily;
use phpcassa\SystemManager;
use phpcassa\Schema\StrategyClass;
use cassandra\Compression;
use cassandra\ConsistencyLevel;


$pool = new ConnectionPool("prod",array('X.X.X.X','X.X.X.X'));

$raw = $pool->get();
$rows = $raw->client->set_cql_version("3.0.0");


$rows = $raw->client->execute_cql3_query('USE prod;', Compression::NONE, ConsistencyLevel::ONE );
$rows = $raw->client->execute_cql3_query('CREATE TABLE emp (
empID int,
deptID int,
first_name varchar,
last_name varchar,
PRIMARY KEY (empID, deptID));
', Compression::NONE, ConsistencyLevel::ONE );


$rows = $raw->client->execute_cql3_query('INSERT INTO emp (empID, deptID, first_name, last_name)
VALUES (104, 15, \'jane\', \'smith\');
', Compression::NONE, ConsistencyLevel::ONE );


$rows = $raw->client->execute_cql3_query('SELECT * FROM emp WHERE empID IN (2,104) ORDER BY deptID ASC;', Compression::NONE, ConsistencyLevel::ONE );

echo "<pre>";
print_r($rows);
echo "<pre>";

生成的输出是:

cassandra\CqlRow Object
(
[key] =>
[columns] => Array
(
[0] => cassandra\Column Object
(
[name] => empid
[value] => h
[timestamp] =>
[ttl] =>
)

[1] => cassandra\Column Object
(
[name] => deptid
[value] =>
[timestamp] =>
[ttl] =>
)

[2] => cassandra\Column Object
(
[name] => first_name
[value] => jane
[timestamp] =>
[ttl] =>
)

[3] => cassandra\Column Object
(
[name] => last_name
[value] => smith
[timestamp] =>
[ttl] =>
)

)

)

最佳答案

虽然回答有点晚,但我在为 Yii 框架编写自己的 cassandra-wrapper 时拼命寻找解决方案。我想出了类似以下类的东西,它消除了 cassandra 中不同数据类型(包括整数类型)的二进制不正确问题:

Yii::import('ext.phpcassa.autoload');
require_once('protected/extensions/phpcassa/autoload.php');

use phpcassa\Connection\ConnectionPool;
use phpcassa\ColumnFamily;
use phpcassa\ColumnSlice;
use phpcassa\SystemManager;
use phpcassa\Schema\StrategyClass;
use phpcassa\Schema\DataType;

class ACassandraConnection extends CApplicationComponent {

protected $_pool = null;
public $keyspace = null;
public $servers = null;

/**
* Establish connection to cassandra cluster
* @return object
*/
private function _get_raw() {
if ($this->_pool === null) {
$this->_pool = new ConnectionPool($this->keyspace, $this->servers);
}
return $this->_pool->get();
}


public function cql_query($query) {
$raw = $this->_get_raw();
$cql_result = $raw->client->execute_cql3_query($query, cassandra\Compression::NONE, cassandra\ConsistencyLevel::ONE);
$this->_pool->return_connection($raw);
return $cql_result;
}

public function cql_get_rows($cql_result) {
if ($cql_result->type == 1) {
$rows = array();
foreach ($cql_result->rows as $rowIndex => $cqlRow) {
$cols = array();
foreach ($cqlRow->columns as $colIndex => $column) {
$type = DataType::get_type_for($cql_result->schema->value_types[$column->name]);
$cols[$column->name] = $type->unpack($column->value);
}
$rows[] = $cols;
}
return $rows;
} else {
return null;
}
}


/**
* Perform garbage collection
*/
public function __destruct() {
if($this->_pool !== null) {
$this->_pool->close();
}
}

}

关于Cassandra 没有检索到正确的整数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16139362/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com