Cassandra拒绝使用where子句运行查询

时间:2017-10-31 15:56:32

标签: cassandra

我有2个Cassandra节点。我有一个包含3个文本字段(所有键)和2个计数器的表。 RF是2。

我在表格中添加了另一个计数器列。错误的是,我发布了该栏目。我将应用程序还原为旧版本以不使用该列。

我添加了另一个计数器列,用不同的名称替换掉落的列。我更改了应用程序以使用该新列。

现在,我的where子句的所有查询都会失败并出现此错误:

  

ReadFailure:来自服务器的错误:代码= 1300 [副本未能执行读取]消息=“操作失败 - 收到0响应和2次失败”info = {'failures':2,'received_responses':0, 'required_responses':1,'一致性':'ONE'}

我在debug.log中看到了这一点:

  

java.lang.IllegalStateException:[paid,revenue,to_pay,value]不是[income to_pay value]的子集

payable是旧列,已删除,to_pay是新列。

发生了什么事?

Cassandra版本是3.11。

PS。我试过修理,它正在运行。它有帮助吗?

编辑:

表架构:

CREATE TABLE backend_platform_prod.stats_counters (
    date text,
    key text,
    revenue counter,
    to_pay counter,
    value counter,
    PRIMARY KEY (date, key)
) WITH CLUSTERING ORDER BY (key ASC)
    AND bloom_filter_fp_chance = 0.01
    AND caching = {'keys': 'ALL', 'rows_per_partition': 'NONE'}
    AND comment = ''
    AND compaction = {'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy', 'max_threshold': '32', 'min_threshold': '4'}
    AND compression = {'chunk_length_in_kb': '64', 'class': 'org.apache.cassandra.io.compress.LZ4Compressor'}
    AND crc_check_chance = 1.0
    AND dclocal_read_repair_chance = 0.1
    AND default_time_to_live = 0
    AND gc_grace_seconds = 864000
    AND max_index_interval = 2048
    AND memtable_flush_period_in_ms = 0
    AND min_index_interval = 128
    AND read_repair_chance = 0.0
    AND speculative_retry = '99PERCENTILE';

有一个payable counter字段,已被删除。

我尝试使用copy to备份数据,删除表并重新创建数据,然后使用copy from进行恢复。它现在正在运行,虽然有些数据似乎缺失(不是很重要)。

我在payable中看到了system_schema.dropped_columns列,但在system_schema.columns中没有。

1 个答案:

答案 0 :(得分:0)

请检入System_schema密钥空间。如果该列仍然存在,则删除该行。