我有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
中没有。
答案 0 :(得分:0)
请检入System_schema密钥空间。如果该列仍然存在,则删除该行。