我需要将我的表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,就可以了。
这种行为的解释是什么?为什么下垂的计数器列后,它似乎仍然在记忆中?
1条答案
按热度按时间yzxexxkh1#
问题是你正在尝试为
counter
列,或将非计数器类型的新列添加到具有计数器的表中。在cassandra中,表可能只包含计数器类型或其他类型,但不能将非计数器类型与计数器类型混合,除非非计数器类型值仅在主键中。您可以在文档中找到更多信息。
获取表结构后更新:
根据cassandra-8099,不能添加类型不兼容的列,并且
counter
与任何东西都不兼容。关于使用新名称添加-该表已标记为包含计数器,不能与非计数器类型一起使用。为什么不简单地删除一个表并用正确的结构重新创建呢?