gpt4 book ai didi

scylla - 从具有二级索引的表中删除列时出错(Scylladb)

转载 作者:行者123 更新时间:2023-12-04 09:33:17 25 4
gpt4 key购买 nike

从包含二级索引的表中删除一列时,出现以下错误。我正在使用 ScyllaDB 版本 3.0.4。

[无效查询] message="无法在具有物化 View 的基表 warehouse.myuser 上删除列名"

下面是示例命令

create table myuser (id int primary key, name text, email text);
create index on myuser(email);
alter table myuser drop name;

我可以在 Apache Cassandra 中成功运行上述语句。

最佳答案

Scylla 中的默认二级索引是全局的,并在物化 View 之上实现(与 Apache Cassandra 的本地索引实现相反),这为它们提供了新的可能性,但也增加了某些限制。从具有物化 View 的表中删除列是一项复杂的操作,尤其是当目标列被其中一个 View 选中或者它的活跃度会影响 View 行的活跃度时。为了避免这些问题,当有物化 View 附加到表时,无条件地删除列是不可能的。您看到的错误是该错误与 Scylla 的索引在下方使用物化 View 来存储每一行​​的相应基本键这一事实的结合。

明显的解决方法是先删除索引,然后删除列并重新创建索引,但这当然需要时间和资源。

但是,在某些情况下,可以允许从基表中删除列,即使它具有物化 View ,尤其是在 View 中未选择该列且其活跃度对 View 行没有任何影响的情况下。作为引用,我创建了一个请求在我们的错误跟踪器中实现它的问题:https://github.com/scylladb/scylla/issues/4448

关于scylla - 从具有二级索引的表中删除列时出错(Scylladb),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55757273/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com