Cassandra -不允许改变类型

2vuwiymt  于 2022-11-05  发布在  Cassandra
关注(0)|答案(2)|浏览(206)

我有Cassandra集群(2个节点),我试图将value列类型更改为Map。
在cqlsh中执行ALTER TABLE "keyspace"."table" ALTER value TYPE Map;后,出现不允许修改的错误。(表为空)

CREATE TABLE "keyspace"."table" (
    key text,
    column1 bigint,
    column2 bigint,
    value text,
    PRIMARY KEY (key, column1, column2)
) WITH COMPACT STORAGE
    AND CLUSTERING ORDER BY (column1 ASC, column2 ASC)
    AND bloom_filter_fp_chance = 0.1
    AND caching = {'keys': 'ALL', 'rows_per_partition': 'NONE'}
    AND comment = ''
    AND compaction = {'class': 'org.apache.cassandra.db.compaction.LeveledCompactionStrategy'}
    AND compression = {'chunk_length_in_kb': '64', 'class': 'org.apache.cassandra.io.compress.SnappyCompressor'}
    AND crc_check_chance = 1.0
    AND dclocal_read_repair_chance = 0.05
    AND default_time_to_live = 0
    AND gc_grace_seconds = 5
    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';

[中文版5.0.1| cassandra 3.11.0| CQL质量标准3.4.4|本机协议v4]
是否可以更改此表结构的表?什么原因会导致此问题?
谢谢

zujrkrfu

zujrkrfu1#

Cassandra中不支持这种修改。有关CQL数据类型和支持的转换的参考,请参阅Datastax文档。
我不知道这是否有效,但您可以尝试删除该列,然后重新创建它?

epfja78i

epfja78i2#

不幸的是,删除和重新添加列仅在所涉及的类型在性质上类似的某些情况下有效。
更大的更改(例如从int更改为boolean)将产生如下错误:

code=2200 [Invalid query] message="Cannot re-add previously dropped column 'MYCOLUMN' of type boolean, incompatible with previous type int"

如果有问题的表是新开发工作的一部分,并且尚未发布到生产环境中,则最好删除该表,然后重新添加新类型。

相关问题