我需要使用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:
答案 0 :(得分:1)
好的,我想我找到了解决方案。我不得不改变主键。主键应包括用于根据状态进行分区的id和status列。