在创建分区表时,mysql报了这样一个错误。
ERROR 1503 (HY000): A PRIMARY KEY must include all columns in the table's partitioning function
大意是用于做分区表的列必须是主键,或包含于主键中。
明白原因后就好处理了,把用于分区的列也加入到主键中,形成复合主键,然后再执行。
CREATE TABLE `f_res` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`eid` int(10) unsigned NOT NULL DEFAULT '0',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`,`eid`),
KEY `idx_eid` (`eid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 partition by hash(eid) partitions 10;
这样就可以执行成功了。
注意:在做分区表时,选择分区的依据字段时要谨慎,需要仔细斟酌这个字段拿来做为分区依据是否合适,这个字段加入到主键中做为复合主键是否适合。