无法使用cqlsh删除或更新cassandra 3.11.2中的记录

vh0rcniy  于 2021-06-13  发布在  Cassandra
关注(0)|答案(1)|浏览(381)

我在cassandra中有一个列族,其模式如下。

CREATE TABLE app_documents (
    key text PRIMARY KEY,
    created_at timestamp,
    created_by text,
    details text,
    id text
) WITH 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';
CREATE INDEX app_documents_id_idx ON app_documents (id);

在这个cf中,我有一个键为''的记录,我可以使用查询选择该记录

select * from app_documents WHERE key = 'abc';

现在我正试图用下面的查询删除或更新它。

delete from app_documents WHERE key = 'abc';
update app_documents set created_by = 'pd' where key = 'abc';

但上述命令对记录没有影响。表中的其他记录按预期工作,但只有此记录处于这种状态。
我的cassandra设置只是一个节点。

dvtswwa3

dvtswwa31#

通常情况下,当数据库中的数据在将来有时间戳,并且通过DO确认时,就会发生这种情况 select writetime(created_by) from app_documents WHERE key = ''; -这个记录的时间戳是8月9日——未来2天。获取此类条目的通常原因是:
客户机上的时钟关闭了一段时间-建议始终 ntp 也可以在客户机上运行,而不仅仅是在cassandra服务器上
时间戳是由客户机显式设置的—这可能会导致不可预知的行为,并且只有在业务逻辑需要时才应该设置显式时间戳,但即使在这种情况下,也应该进行一些检查,以防止在将来插入时间戳

相关问题