【问题标题】:cassandra UpdateColumnFamily InvalidRequestException Default TExceptioncassandra UpdateColumnFamily InvalidRequestException 默认 TException
【发布时间】:2012-07-03 18:22:01
【问题描述】:

我将 thrift-0.7.0 与 cassandra-1.1.1 一起使用,我成功地使用 system_add_column_family 添加了一个新的列族,但是当我尝试使用 system_update_column_family 将新列添加到现有的列族时给我一个错误“UpdateColumnFamily InvalidRequestException Default TException",我尝试的示例c++代码如下

string sReturn;
CfDef ColumnFamilyDef;
ColumnFamilyDef.keyspace="keyspace2";
ColumnFamilyDef.column_type="Standard";
ColumnFamilyDef.name="ColFM1";
ColumnFamilyDef.__isset.column_type=true;

ColumnDef column;
column.name="Col2";
column.validation_class="UTF8Type";
ColumnFamilyDef.column_metadata.push_back(column);

ColumnFamilyDef.__isset.column_metadata=true;
mpClient->system_update_column_family(sReturn,ColumnFamilyDef);

给我以下例外

UpdateColumnFamily InvalidRequestException 默认 TException

谁能帮帮我 提前谢谢你

【问题讨论】:

  • 你的 Cassandra 日志是怎么说的?
  • 您确定ColFM1 以前存在于您的密钥空间中吗?如果您在 linux 机器上,请尝试 tail -f your_cassandra_log_dir/system.log 并在其他终端中执行此 c 代码

标签: cassandra


【解决方案1】:

我相信您仍然需要在您的连接上调用 set_keyspace 以在创建列族之前将其设置为您的新键空间。这也许就是问题所在。

附带说明一下,使用 CQL 而不是旧的 Thrift API 可能更容易做到这一点。您基本上可以只调用execute_cql_query 并传入一个字符串。有一个full reference for CQL 应该会让事情变得更容易。

【讨论】:

    猜你喜欢
    • 2015-06-03
    • 2011-03-09
    • 2017-12-30
    • 2015-04-27
    • 2014-01-05
    • 2013-05-23
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    相关资源
    最近更新 更多