mysql> show create table user\G
*************************** 1. row ***************************
       Table: user
Create Table: CREATE TABLE `user` (
  `uid` int(11) NOT NULL AUTO_INCREMENT,
  `uname` varchar(60) NOT NULL,
  `regdate` date NOT NULL COMMENT '注册日期',
  UNIQUE KEY `uname` (`uname`),
  UNIQUE KEY `idx-uniq-part` (`uid`,`regdate`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)执行表分区,按注册事件进行年份来分区存放,但是要求保留 登录名的唯一性属性,以防止存在相同的登陆名
运行下面的SQL报错。按照MySQL官方的提示是需要所有的都放进去,而uname 放进去就无法进行时间对比了,困惑。alter table user
partition by range(year(regdate))
(
partition pMin values less than (2015),
partition p2015 values less than (2016),
partition p2016 values less than (2017),
partition pMax values less than maxvalue
);
ERROR 1503 (HY000): A PRIMARY KEY must include all columns in the table's partitioning function