1

整数値を選択しようとしていますが、選択できません これは私のコードです:

cassandra_socket = boost::shared_ptr<TSocket>(new TSocket(host, port));
cassandra_transport = boost::shared_ptr<TFramedTransport>(new TFramedTransport(cassandra_socket));
protocol = boost::shared_ptr<TBinaryProtocol>(new TBinaryProtocol(cassandra_transport));
cassandra_client = new CassandraClient(protocol);
try {
    cassandra_transport->open();
    cassandra_client->set_keyspace("MPS");
    ColumnOrSuperColumn csc;
    ColumnPath cpath;
    cpath.column_family.assign("SubmitResposes_count");
    /* This is required - thrift 'feature' */
    cpath.__isset.column = true;
    cpath.column = "Counter";
    cassandra_client->get(csc, "1", cpath,org::apache::cassandra::ConsistencyLevel::ONE);
    cout << "Value read is '" << csc.column.value << "'..." << endl;
}
catch (NotFoundException &nf) {
    FORCE_TRACE(0, "NOT FOUND EXCEPTION ERROR: %s", nf.what());
} catch (InvalidRequestException &re) {
    FORCE_TRACE(0, "INVALID REQUEST ERROR: %s", re.why);
} catch (TException &tx) {
    FORCE_TRACE(0, "TEEXCEPTION ERROR: %s", tx.what());
}

それは私にこの例外を与えます: InvalidRequest ERROR: Expected 4 or 0 byte int (1)

&これは私が作成したテーブルです:

create table SubmitResposes_count(
    ID int primary key,
    Counter bigint);
4

1 に答える 1

0

あなたのキーはintです:

ID int primary key,

ただし、文字列キーを使用してクエリを実行しています:

cassandra_client->get(csc, "1", cpath,org::apache::cassandra::ConsistencyLevel::ONE);
                           ^^^

Cassandra は文字列を int として検証しようとしているため、この例外が発生しています。

于 2012-11-26T14:52:37.917 に答える