MySQL:更改表以创建主键错误的分区



我需要使用LIST COLUMNS分区对MySQL表进行分区。我已经有了包含数据的表,所以我需要更改表来创建分区。

以下是我正在做的事情。

示例模式:

CREATE TABLE mytable (
  id bigint(20) primary key auto_increment,
  .....
  status varchar(10)
);

更改我正在使用的表脚本:

ALTER TABLE mytable PARTITION BY LIST COLUMNS (status) 
( 
    PARTITION p1 VALUES IN (NULL), 
    PARTITION p2 VALUES IN ('SUCCESS'), 
    PARTITION p3 VALUES IN ('FAILED')
);

错误:PRIMARY KEY必须包括表的分区函数中的所有列

然而,当我刚刚尝试创建一个没有id列的表时,如下所示:

CREATE TABLE mytable (
  status varchar(10)
);

然后尝试使用上面相同的alter脚本创建分区,它成功了。那么,我是不是遗漏了桌子上有身份证的东西?

SQLFiddle:

工作:http://sqlfiddle.com/#!9/c8a3d1

不工作:http://sqlfiddle.com/#!9/d06a1

好的,我想我找到了解决方案。我不得不更改主键。主键应该包括id和状态列,以便根据状态进行分区。

相关内容

  • 没有找到相关文章

最新更新