CREATE TABLE mykespace.newtable (
name text PRIMARY KEY,
marks int,
score float,
value float,
value2 blob
)
cqlsh:mykespace> alter table newtable alter value type int;
InvalidRequest: Error from server: code=2200 [Invalid query] message="Altering of types is not allowed"
cqlsh:mykespace> alter table newtable alter value2 type varint;
InvalidRequest: Error from server: code=2200 [Invalid query] message="Altering of types is not allowed"
无法更改数据类型,甚至int更改为varint,并且浮动到int
答案 0 :(得分:0)
自Cassandra 3.10和3.0.11起,使用CASSANDRA-12443删除了更改列数据类型的功能。
...因为我们不再存储所有类型的长度,从固定宽度切换到可变宽度类型会导致问题。 commitlog回放破坏启动,当前正在运行的查询返回错误结果,以及处理更改所需的特殊大小。
这里最好的解决方法是删除现有列,并创建一个具有不同名称的新列(以避免commitlog重放的潜在问题)。类似的东西:
ALTER TABLE mykeyspace.newtable DROP value;
ALTER TABLE mykeyspace.newtable ADD value_int int;