MySQL:更改表以创建分区,给出主键错误

时间:2016-05-19 02:58:59

标签: mysql database-partitioning

我需要使用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 script创建分区,它工作正常。那么,我错过了桌子上的任何内容吗?

SQLFiddle:

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

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

1 个答案:

答案 0 :(得分:1)

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