1

Partition BY RANGE 不能应用于主键自增的表吗?我之所以问它是因为看到了一些(12)没有主键定义的 create table 语句示例。而且我的创建表语句也给了我错误:

PRIMARY KEY 必须包括表的分区函数中的所有列

这是我的声明

CREATE TABLE `tbl_point` (
   `id` int(11) NOT NULL AUTO_INCREMENT,
   `cord_x` double DEFAULT NULL,
   `cord_y` double DEFAULT NULL,
   `angle` int DEFAULT NULL,
   PRIMARY KEY (`id`)
)
PARTITION BY RANGE (angle) (
   PARTITION p0 VALUES LESS THAN (91),
   PARTITION p1 VALUES LESS THAN (181),
   PARTITION p2 VALUES LESS THAN (271),
   PARTITION p3 VALUES LESS THAN (361)
) 

还有一个问题:角度柱可以是双类型的吗?因为当我将其设置为 double 时出现此错误:

PARTITION 函数返回错误的类型

谢谢。

4

1 回答 1

1

第一条错误消息相当明确:

PRIMARY KEY 必须包括表的分区函数中的所有列

您必须按主键分区,或包含angle在主键中

我想你不想要后者,所以前者是解决方案。

至于第二个错误:

PARTITION 函数返回错误的类型

确实,分区函数(这里的“ angle”就是所谓的“函数”,认为它是恒等函数)必须返回一个整数,如手册中所述

分区键必须是整数列或解析为整数的表达式。

于 2012-11-05T15:38:13.980 回答