我有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]
是否可以更改此表结构的表?什么原因会导致此问题?
谢谢
2条答案
按热度按时间zujrkrfu1#
Cassandra中不支持这种修改。有关CQL数据类型和支持的转换的参考,请参阅Datastax文档。
我不知道这是否有效,但您可以尝试删除该列,然后重新创建它?
epfja78i2#
不幸的是,删除和重新添加列仅在所涉及的类型在性质上类似的某些情况下有效。
更大的更改(例如从int更改为boolean)将产生如下错误:
如果有问题的表是新开发工作的一部分,并且尚未发布到生产环境中,则最好删除该表,然后重新添加新类型。