我可以将计数器类型字段用作我的 C* table 的主键吗?
Can I user counter type field as primary key of my C* table?
当我尝试创建如下 table 时
create table if not exists counter_temp(id counter PRIMARY KEY , comment text);
报错如下
Multiple markers at this line
For a table with counter columns, all columns except the primary key must be type counter
counter type is not supported for PRIMARY KEY part
问题 1:
什么原因,计数器列不允许作为主键的一部分?
问题 2 :
当我尝试创建如下时
创建 table 如果不存在 counter_temp(id uuid PRIMARY KEY, counter_t counter, comment text)
Error : Cant mix counter and non-counter columns in the same table
What is wrong here ? how to handle it correct way ?
问题 3 :
我在 Dev env 中有一个 table emp( emp_id counter, emp_name text) 有数据,现在我需要将该数据复制到另一个 SIT env emp( emp_id 计数器,emp_name 文本)table ?
能否正确复制计数器字段?
问题 1 的简短答案是 否,因为它已在错误消息中传达。但即使它被允许,也没有任何意义 - 当您更改主键的值时,您基本上是在创建一个具有不同主键的新行。
对于 Q2 - 如果 table 中至少有一个 counter
列,则所有其他常规列的类型应为 counter
。如果您需要添加评论字段,只需创建第二个 table,主键为 UUID
并同时插入或读取数据 to/from 2 tables。
对于第 3 季度 - cqlsh 的 COPY
命令支持 tables,带有针对较新 Cassandra 版本的计数器(其中实现了对 CASSANDRA-9043 的修复)。此外,Spark Cassandra Connector 能够使用计数器从 tables 读取并写入它们。但在这两种情况下,请确保目标 table 为空,否则新值将附加到现有值。
当我尝试创建如下 table 时
create table if not exists counter_temp(id counter PRIMARY KEY , comment text);
报错如下
Multiple markers at this line
For a table with counter columns, all columns except the primary key must be type counter
counter type is not supported for PRIMARY KEY part
问题 1:
什么原因,计数器列不允许作为主键的一部分?
问题 2 : 当我尝试创建如下时
创建 table 如果不存在 counter_temp(id uuid PRIMARY KEY, counter_t counter, comment text)
Error : Cant mix counter and non-counter columns in the same table
What is wrong here ? how to handle it correct way ?
问题 3 :
我在 Dev env 中有一个 table emp( emp_id counter, emp_name text) 有数据,现在我需要将该数据复制到另一个 SIT env emp( emp_id 计数器,emp_name 文本)table ?
能否正确复制计数器字段?
问题 1 的简短答案是 否,因为它已在错误消息中传达。但即使它被允许,也没有任何意义 - 当您更改主键的值时,您基本上是在创建一个具有不同主键的新行。
对于 Q2 - 如果 table 中至少有一个 counter
列,则所有其他常规列的类型应为 counter
。如果您需要添加评论字段,只需创建第二个 table,主键为 UUID
并同时插入或读取数据 to/from 2 tables。
对于第 3 季度 - cqlsh 的 COPY
命令支持 tables,带有针对较新 Cassandra 版本的计数器(其中实现了对 CASSANDRA-9043 的修复)。此外,Spark Cassandra Connector 能够使用计数器从 tables 读取并写入它们。但在这两种情况下,请确保目标 table 为空,否则新值将附加到现有值。