【问题标题】:Altering a column family in cassandra in a multiple node topology在多节点拓扑中更改 cassandra 中的列族
【发布时间】:2015-07-31 09:26:51
【问题描述】:

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

ALTER TABLE posts ADD is_black BOOLEAN;

在单节点环境中,无论是在 EC2 服务器下还是在本地主机上,一切都运行良好 - 选择、删除等等。

当我在具有 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 - 删除创建键空间对我来说是不可能的,因为我无法删除表中包含的数据。

【问题讨论】:

  • 您可以在所有节点上通过 cqlsh 查询该列吗?
  • @BryceAtNetwork23 是的,我愿意,在每个节点上对每个数据进行转换。
  • 它可能与 datastax 驱动程序的缓存元数据有关。您是否可以尝试重新启动应用程序服务器以清除缓存?

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


【解决方案1】:

错误已解决:-)

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

重启所有节点后,内存缓存被删除,bug解决。

【讨论】:

猜你喜欢
  • 2017-03-24
  • 1970-01-01
  • 1970-01-01
  • 2012-05-31
  • 2023-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多