【问题标题】:alter composite primary key in cassandra CQL 3.0更改 cassandra CQL 3.0 中的复合主键
【发布时间】:2014-04-04 02:05:18
【问题描述】:

我的情况需要如下更改复合主键:

旧主键:(id、source、attribute_name、updated_at);

我想要的新主键:(source, id, attribute_name, updated_at);

我发出了以下(类似mysql的)命令:

ALTER TABLE general_trend_table 
DROP PRIMARY KEY, 
ADD PRIMARY KEY(source, id, attribute_name, updated_at);

我收到以下错误:

错误请求:第 1:38 行在输入“PRIMARY”处没有可行的替代方案

知道如何解决这个问题吗?更具体地说,我想知道有什么方法可以更改 cassandra 中的主键吗?

【问题讨论】:

    标签: cassandra composite-primary-key alter cql3 cqlsh


    【解决方案1】:

    无法更改主键,因为它定义了数据的物理存储方式。

    您可以使用新的主键创建一个新表,从旧表复制数据,然后删除旧表。

    【讨论】:

    • 我尝试使用 cqlsh,ALTER COLUMNFAMILY mycolumnfamily RENAME key TO key1;这很好用。在尝试这个时,我也得到了以下建议。 ADD,ALTER,DROP,WITH @Mikhail 我们不能用这些来改变主键吗?
    • 如何重命名表格?你能提供一个完整的例子吗?
    【解决方案2】:

    如果有可能使用旧的主键,您可以创建一个实体化视图:http://docs.datastax.com/en/cql/3.3/cql/cql_using/useCreateMV.html 但只有在您需要旧密钥时才建议这样做。

    【讨论】:

      猜你喜欢
      • 2013-08-27
      • 2015-03-24
      • 2012-08-31
      • 2016-03-22
      • 2013-08-14
      • 2016-04-08
      • 2023-03-31
      • 2015-10-28
      • 1970-01-01
      相关资源
      最近更新 更多