当我试图创建如下表
create table if not exists counter_temp(id counter PRIMARY KEY , comment text);
它给出的错误如下
这条线上有多个标记
对于包含counter列的表,除主键外的所有列都必须是counter类型
主键部分不支持计数器类型
问题1:
什么原因,计数器列不允许作为主键的一部分?
问题2:当我试图创造如下
创建表如果不存在counter\u temp(id uuid主键,counter\u t counter,注解文本)
错误:不能在同一表中混合计数器和非计数器列
这里怎么了?如何正确处理?
问题3:
我在dev env中有一个表emp(emp\u id counter,emp\u name text),其中有数据,现在我需要将该数据复制到另一个sit env emp(emp\u id counter,emp\u name text)表中?
它能做到吗?它能正确地复制计数器字段吗?
1条答案
按热度按时间uttx8gqw1#
问题1的简短答案是“否”,因为它是在错误消息中传达的。但即使允许这样做,也没有任何意义—当您更改主键的值时,基本上就是用不同的主键创建新行。
对于q2-如果至少有一个
counter
列,则所有其他常规列都应具有类型counter
. 如果需要添加注解字段,只需创建第二个表,其中UUID
主键&同时向两个表插入或读取数据。对于q3-cqlsh
COPY
命令支持带有较新cassandra版本计数器的表(其中实现了cassandra-9043的修复)。此外,spark cassandra连接器能够从带有计数器的表中读取数据并对其进行写入。但在这两种情况下,请确保目标表为空,否则新值将附加到现有值。