按范围划分的MySQL分区不';不能使用主键吗?

按范围划分的MySQL分区不';不能使用主键吗?,mysql,Mysql,是否按范围分区不能应用于具有自动递增主键的表? 我这样问是因为我看到了一些没有主键定义的CREATETABLE语句的(,)示例。我的create table语句也给出了错误: 主键必须包括表分区函数中的所有列 这是我的声明 CREATE TABLE `tbl_point` ( `id` int(11) NOT NULL AUTO_INCREMENT, `cord_x` double DEFAULT NULL, `cord_y` double DEFAULT NULL, `

是否按范围分区不能应用于具有自动递增主键的表? 我这样问是因为我看到了一些没有主键定义的CREATETABLE语句的(,)示例。我的create table语句也给出了错误:

主键必须包括表分区函数中的所有列

这是我的声明

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时,出现了这个错误:

分区函数返回错误的类型


谢谢。

第一条错误消息非常明确:

主键必须包括表分区函数中的所有列

必须按主键进行分区,或者在主键中包含
角度

我想你不想要后者,所以前者是解决办法

至于第二个错误:

分区函数返回错误的类型

实际上,配分函数(此处,“
角度”
”是所谓的“函数”,将其视为标识函数)必须返回一个整数,如下所述:

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


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

主键必须包括表分区函数中的所有列

必须按主键进行分区,或者在主键中包含
角度

我想你不想要后者,所以前者是解决办法

至于第二个错误:

分区函数返回错误的类型

实际上,配分函数(此处,“
角度”
”是所谓的“函数”,将其视为标识函数)必须返回一个整数,如下所述:

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


所以不可能有双角度?因为cast()函数不提供双精度type@Andriy相反,如果将
angle
定义为
DOUBLE
,则需要将其转换为整数:
按范围划分(转换(带符号的角度))
。不过,这并没有解决第一个问题,即
角度
需要是主键的一部分。现在它是主键的一部分。谢谢,不可能有双角度吗?因为cast()函数不提供双精度type@Andriy相反,如果将
angle
定义为
DOUBLE
,则需要将其转换为整数:
按范围划分(转换(带符号的角度))
。不过,这并没有解决第一个问题,即
角度
需要是主键的一部分。现在它是主键的一部分。谢谢