mysql - 在按 LIST COLUMNS 进行表分区的情况下出现错误
问题描述
我有一个具有以下结构的表:
CREATE TABLE `orders_partition` (
`Order_Id` bigint(20) NOT NULL,
`Category_Id` bigint(20) NOT NULL,
`Order_No` varchar(50) CHARACTER SET latin1 NOT NULL,
`Student_Id` bigint(20) DEFAULT NULL,
`Country_Id` bigint(20) NOT NULL,
`Total_Refers` int(11) NOT NULL,
`Pages` float(5,1) NOT NULL,
`Word_count` int(11) NOT NULL,
`Order_Type_Id` bigint(20) DEFAULT NULL,
`Reference_Style_Id` int(11) NOT NULL,
`Payment_Mode_Id` bigint(20) DEFAULT NULL,
`Payment_Status_Id` bigint(20) DEFAULT NULL,
`Order_IP` varchar(255) CHARACTER SET latin1 NOT NULL,
`Order_Amount` decimal(10,2) NOT NULL DEFAULT '0.00',
`Order_Status_Id` bigint(20) DEFAULT NULL,
`Panic` tinyint(1) NOT NULL DEFAULT '0',
`Url_Referal_Detail` text CHARACTER SET latin1 NOT NULL,
`publish_status` int(11) NOT NULL,
`L_Q_Reason_Id` varchar(255) CHARACTER SET latin1 DEFAULT 'NULL',
`Transfer_Status` enum('NT','T','A') CHARACTER SET latin1 NOT NULL DEFAULT 'A' COMMENT 'NT=>not transfer,T=>transfer,A=>allowed to transfer',
`Visibility` enum('E','D') CHARACTER SET latin1 NOT NULL DEFAULT 'E' COMMENT 'E=enabled, D=disabled',
`Active_Date` datetime NOT NULL,
`Active_Status` enum('A','DA') CHARACTER SET latin1 NOT NULL DEFAULT 'A' COMMENT 'A=>Active,DA=>Deactive'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
ALTER TABLE `orders_partition`
ADD PRIMARY KEY (`Order_Id`),
ADD UNIQUE KEY `Order_Id` (`Order_Id`),
ADD KEY `Order_Status_Id` (`Order_Status_Id`),
ADD KEY `Country_Id` (`Country_Id`)
执行以下分区查询
ALTER TABLE orders_partition
PARTITION BY LIST COLUMNS (Active_Status)
(
PARTITION p01 VALUES IN ('A'),
PARTITION p02 VALUES IN ('DA')
)
低于错误
1659 - 字段 'Active_Status' 是此类分区不允许的类型
我想在我们的 mysql 表中实现分区(LIST COLUMNS),mysql 版本是 5.7
解决方案
不要试图在一个标志上进行分区;它不太可能带来任何好处。
MySQLPARTITIONing
有很多限制。您遇到了可以对哪些数据类型进行分区的限制 - 该列表不包括ENUM
。
如果您已经通过了,下一个错误将是需要在每个唯一键(包括主键)中包含“分区键”。
同时,UNIQUE(Order_id)
与 是多余的PRIMARY KEY(Order_id)
。PK 是(根据 MySQL 的定义)一个键并且是唯一的。
推荐阅读
- javascript - 是否可以有多个 .then 函数?
- javascript - 在 powerschool 中创建自定义页面
- java - java.lang.ArrayIndexOutOfBoundsException:长度=3;指数=-1
- swift - metadata?.downloadURL()?.absoluteString
- r - 在 R 中正确定义类的成员和不变量
- c# - .Net - 如何在并行批处理或多个实例中处理大量 MongoDB 文档
- java - 使用 Webstream 中的 JAAD 播放 AAC
- html - 本地主机打开html文件
- c# - OpenIdConnectProtocolValidationContext.Nonce 为空
- c++ - htonl出现分段错误