以下是按预期工作的创建表语句。但是如果我有一个没有任何分区的表并且如果我尝试添加分区,似乎我不能在其中添加超过 16 个值。
CREATE TABLE `mypart` (
`part_id` int(11) DEFAULT NULL
) ENGINE=MyISAM
PARTITION BY LIST (part_id)
(
PARTITION Jan10 VALUES IN (1,2,3,4,5) ENGINE = MyISAM,
PARTITION Mar10 VALUES IN (734201,734202,734203,734204,734205,734206,734207,734208,734209,734210,734211,734212,734213,734214,734215,734216, 734217) ENGINE = MyISAM
);
以下所有语句都应成功执行并创建如上所示的表。
drop table mypart;
create table mypart (`part_id` int) ENGINE=MyISAM ;
alter table mypart partition by list(part_id) (PARTITION Jan10 VALUES IN (1, 2, 3, 4, 5));
mysql> alter table mypart add PARTITION (PARTITION Mar10 VALUES IN (734201, 734202, 734203, 734204, 734205, 734206, 734207, 734208, 734209, 734210, 734211, 734212, 734213, 734214, 734215,734216, 734217 ) ) ;
ERROR 1657 (HY000): Cannot have more than one value for this type of LIST partitioning
此时,第二个 alter table 语句不起作用,因此我无法获得第一个示例中所示的 Mar10 分区的 17 个值。如果我删除最后一个值 734217 那么 alter table 语句就成功了!
mysql> alter table mypart add PARTITION (PARTITION Mar10 VALUES IN (734201, 734202, 734203, 734204, 734205, 734206, 734207, 734208, 734209, 734210, 734211, 734212, 734213, 734214, 734215,734216));
Query OK, 0 rows affected (0.09 sec)
Records: 0 Duplicates: 0 Warnings: 0
alter table 语句中是否有某些不适用于 create table 语句的限制?
这是一个已在 MySQL 5.6.5 中修复的错误。
请参阅http://bugs.mysql.com/bug.php?id=62505