cassandra-无法重新添加先前删除的计数器列

cld4siwp  于 2021-06-14  发布在  Cassandra
关注(0)|答案(1)|浏览(399)

我需要将我的表changing counter列修改为int。
删除和添加前的表:

CREATE TABLE <table_name> (
    id text PRIMARY KEY,
    questions_asked counter);

为了做到这一点,我尝试先删除counter列:

ALTER TABLE <table_name> DROP questions_asked;

然后我尝试添加同名的新列,但这次是int:

ALTER TABLE <table_name> ADD questions_asked int;

我得到以下错误:
invalidrequest:来自服务器的错误:code=2200[invalid query]message=“无法重新添加先前丢弃的计数器列问题\u”
此外,如果我尝试给列起新名称,则会出现以下错误:
configurationexception:无法在计数器列族中添加非计数器列(问题\u)
如果我对不同类型的列执行这个序列,比如alterdroptext和addint,就可以了。
这种行为的解释是什么?为什么下垂的计数器列后,它似乎仍然在记忆中?

yzxexxkh

yzxexxkh1#

问题是你正在尝试为 counter 列,或将非计数器类型的新列添加到具有计数器的表中。在cassandra中,表可能只包含计数器类型或其他类型,但不能将非计数器类型与计数器类型混合,除非非计数器类型值仅在主键中。
您可以在文档中找到更多信息。
获取表结构后更新:
根据cassandra-8099,不能添加类型不兼容的列,并且 counter 与任何东西都不兼容。关于使用新名称添加-该表已标记为包含计数器,不能与非计数器类型一起使用。
为什么不简单地删除一个表并用正确的结构重新创建呢?

相关问题