在多节点拓扑中更改cassandra中的列族

时间:2015-05-19 13:46:13

标签: cassandra cassandra-2.0 datastax datastax-java-driver cassandra-cli

我在尝试更改cassandra时遇到以下问题: 我正在改变表格:

ALTER TABLE posts ADD is_black BOOLEAN;

在单节点环境中,无论是在EC2服务器还是在localhost上,一切都运行得很完美 - 选择,删除等等。

当我在具有3个节点的群集上进行更改时 - 东西变得越来越大。 当我表演时

select().all().from(tableName).where..

我收到以下异常:

java.lang.IllegalArgumentException: is_black is not a column defined in this metadata

    at com.datastax.driver.core.ColumnDefinitions.getAllIdx(ColumnDefinitions.java:273)

    at com.datastax.driver.core.ColumnDefinitions.getFirstIdx(ColumnDefinitions.java:279)

    at com.datastax.driver.core.ArrayBackedRow.getIndexOf(ArrayBackedRow.java:69)

    at com.datastax.driver.core.AbstractGettableData.getString(AbstractGettableData.java:137)

显然,我并不是唯一一个有这种行为的人: reference

p.s - drop我不可能创建密钥空间,因为我无法删除表中包含的数据。

1 个答案:

答案 0 :(得分:0)

错误已解决: - )

我发现DataStax维护在包含每个节点配置的内存缓存中,当我更改表时,此缓存没有更新,因为我使用的是cqlsh而不是他们的SDK。

重新启动所有节点后,内存缓存被删除,错误已解决。