撤销cassandra意外更新

时间:2013-08-16 19:28:43

标签: cassandra cql

有没有办法撤销columnfamily update命令?我试图更新一个列,但结果是“更新columnfamily dev;”,现在我只查询了我查询时的ID。但是如果我运行nodetool状态,那么数据似乎存在于那里。我试图恢复快照,但即使这样也无济于事。

1 个答案:

答案 0 :(得分:1)

因此,如果我找到你,你已经删除了你的列元数据,你现在可以得到这样的结果:

cqlsh:test> select * from user;

 uuid
--------------------------------------
 fd24b190-072d-11e3-a1c4-97db6b0653ce
 054a43d0-072e-11e3-a1c4-97db6b0653ce
 0aa71920-072e-11e3-a1c4-97db6b0653ce
 07fda400-072e-11e3-a1c4-97db6b0653ce

虽然你想要这样的东西:

 uuid                                 | email                | name
--------------------------------------+----------------------+-------
 fd24b190-072d-11e3-a1c4-97db6b0653ce | user0@somedomain.com | User0
 054a43d0-072e-11e3-a1c4-97db6b0653ce | user1@somedomain.com | User1
 0aa71920-072e-11e3-a1c4-97db6b0653ce | user3@somedomain.com | User3
 07fda400-072e-11e3-a1c4-97db6b0653ce | user2@somedomain.com | User2

您可以通过添加有关列的信息来获取数据。

鉴于原始表的定义如下:

CREATE TABLE user(
  uuid timeuuid PRIMARY KEY, 
  name varchar, 
  email varchar
);

您可以使用CQL添加缺少的列信息:

cqlsh:test> ALTER TABLE user ADD email varchar;                  
cqlsh:test> ALTER TABLE user ADD name varchar;