Cassandra 抛出错误请求:具有条件的批处理不能跨多个表



Cassandra 文档和博客说,带有条件更新语句的批处理在分区的粒度上工作,分区由主键中的第一个键定义所以,我有以下键空间:

CREATE TABLE SOCIAL_PROFILE (
soc_net_type text,
soc_net_user_id text,
user_prof_id text,
PRIMARY KEY (soc_net_type, soc_net_user_id)); 
CREATE TABLE SOCIAL_PROFILE_CONTACT (
soc_prof_soc_net_type text,
soc_prof_soc_net_user_id text,
soc_net_user_id text,
PRIMARY KEY (soc_prof_soc_net_type, soc_prof_soc_net_user_id, soc_net_user_id));

并插入语句:

BEGIN BATCH INSERT INTO social_profile (soc_net_type, soc_net_user_id, user_prof_id) VALUES ('vk', '1', '100') IF NOT EXISTS; INSERT INTO social_profile_contact (soc_prof_soc_net_type, soc_prof_soc_net_user_id, soc_net_user_id) VALUES ('vk', '1', '2'); INSERT INTO social_profile_contact (soc_prof_soc_net_type, soc_prof_soc_net_user_id, soc_net_user_id) VALUES ('vk', '1', '3'); INSERT INTO social_profile_contact (soc_prof_soc_net_type, soc_prof_soc_net_user_id, soc_net_user_id) VALUES ('vk', '1', '4'); APPLY BATCH;

social_profile_contact.soc_prof_soc_net_type = social_profile.soc_net_type 它们都具有相同的值,应该在同一个分区中,但 Cassandra 抛出:错误请求:具有条件的批处理不能跨多个表

我在文档中没有找到有关表格的字眼,我做错了什么?

CQLSH 4.1.1 |卡桑德拉 2.0.11 |CQL 规范 3.1.1 |节俭协议 19.39.0

"具有条件的批处理不能跨多个表">

使用相同主键的两个不同的列族(表(仍然是两个不同的分区。

您需要在独立批处理中使用"如果不存在"来移动语句。 如果不存在,请在social_profile(soc_net_type、soc_net_user_id、user_prof_id(中插入值("VK"、"1"、"100"(;

带有条件(如果不存在(的批处理插入只能包含单个类型。

相关内容

  • 没有找到相关文章

最新更新