MySQL - UNIQUE INDEX 必须包含 table 分区函数中的所有列

MySQL - A UNIQUE INDEX must include all columns in the table's partitioning function

我有以下 table 设置(为示例简化了列名):

CREATE TABLE data_2016
( `a` INTEGER , 
  `b` INTEGER,
  `c` VARCHAR(255),
  `d` BIGINT,
  `e` VARCHAR(255) NOT NULL,
  `f` INTEGER ,
  `g` BIGINT ,
  `h` BIGINT ,
  `i` SERIAL,
PRIMARY KEY (`d`,`i`),
UNIQUE KEY(`b`, `c`, `d`, `e`, `f`,`g`,`h`,`i`),
INDEX `idx1` (`b`,`c`)
)
PARTITION BY RANGE (`d`) (
PARTITION p1 VALUES LESS THAN (...)
...
PARTITION px VALUES LESS THAN (MAXVALUE)
)

但我收到异常 A UNIQUE INDEX must include all columns in the table's partitioning function

我通读了文档,据我所知,我 的设置是正确的。分区列 d 包含在 PRIMARY KEYUNIQUE KEY 定义中。我在这里做错了什么?

SERIAL 更改为 INT UNSIGNED AUTO_INCREMENT(或任何等效项)。 manual 表示:

SERIAL is an alias for BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE.

这意味着有一个隐含的

UNIQUE(i)

其中不包括 d 分区键。

需要

CHARACTER SET latin1 以避免另一个关于索引长度的错误。 (对于一个索引,8 列通常是 "too long"。)

(并查看我的评论。)