我需要将TABLE更改计数器列更改为int。
删除和添加之前的表:
CREATE TABLE <table_name> (
id text PRIMARY KEY,
questions_asked counter);
为此,我尝试先删除计数器列:
ALTER TABLE <table_name> DROP questions_asked;
比起我,我试图添加与int相同名称的新列:
ALTER TABLE <table_name> ADD questions_asked int;
我收到以下错误:
InvalidRequest:来自服务器的错误:代码= 2200 [无效查询] message =“无法重新添加之前删除的计数器列 Questions_asked”
此外,如果我尝试给该列重新命名,则会出现此错误:
ConfigurationException:无法添加非计数器列 (question_asked)在计数器列族中
如果我要对具有不同类型的列执行此序列-假设更改放置文本并添加int,它将正常工作。
对此行为的解释是什么? 为什么下垂计数器列后似乎仍在内存中?
答案 0 :(得分:0)
问题是您试图更改counter
列的类型,或将非计数器类型的新列添加到带有计数器的表中。在Cassandra中,表可能仅包含计数器类型或其他类型,但是您不能将非计数器类型与计数器类型混合使用,除非非计数器类型的值仅在主键中。
您可以在documentation中找到更多信息。
获取表结构后更新:
根据CASSANDRA-8099,您不能添加类型不兼容的列,并且counter
与任何内容都不兼容。关于使用新名称添加-该表已被标记为包含计数器,并且不能用于非计数器类型。
为什么不简单地删除表并以正确的结构重新创建?