我有以下表格设置(示例中简化了列名称):
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 KEY
和UNIQUE KEY
定义中。我在这里做错了什么?
答案 0 :(得分:1)
将SERIAL
更改为INT UNSIGNED AUTO_INCREMENT
(或等同的任何内容)。 manual说:
SERIAL是BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE的别名。
这意味着存在隐含的
UNIQUE(i)
其中不包括d
,分区键。
CHARACTER SET latin1
以避免有关索引长度的其他错误。 (对于索引,8列通常“太长”。)
(并查看我的评论。)