ERROR 1503 (HY000): A PRIMARY KEY must include all columns in the table's partitioning function

在创建分区表时,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;

这样就可以执行成功了。

注意:在做分区表时,选择分区的依据字段时要谨慎,需要仔细斟酌这个字段拿来做为分区依据是否合适,这个字段加入到主键中做为复合主键是否适合。

你可能感兴趣的:(mysql)