mysql - 收到错误 1503 : A primary key must include all columns in the table's partitioning function

标签 mysql partition

我有一个像这样的表结构-

CREATE TABLE `cdr` (`id` bigint(20) NOT NULL AUTO_INCREMENT,
                    `dataPacketDownLink` bigint(20) DEFAULT NULL,
                    `dataPacketUpLink` bigint(20) DEFAULT NULL,
                    `dataPlanEndTime` datetime DEFAULT NULL,
                    `dataPlanStartTime` datetime DEFAULT NULL,
                    `dataVolumeDownLink` bigint(20) DEFAULT NULL,
                    `dataVolumeUpLink` bigint(20) DEFAULT NULL,  
                    `dataplan` varchar(255) DEFAULT NULL,  
                    `dataplanType` varchar(255) DEFAULT NULL,  
                    `createdOn` datetime DEFAULT NULL,  
                    `deviceName` varchar(500) DEFAULT NULL,  
                    `duration` int(11) NOT NULL,  
                    `effectiveDuration` int(11) NOT NULL,  
                    `hour` int(11) DEFAULT NULL,  
                    `eventDate` datetime DEFAULT NULL,  
                    `msisdn` bigint(20) DEFAULT NULL,  
                    `quarter` int(11) DEFAULT NULL,  
                    `validDays` int(11) DEFAULT NULL,  
                    `dataLeft` bigint(20) DEFAULT NULL,  
                    `completedOn` datetime DEFAULT NULL,   
                PRIMARY KEY (`id`),   
                KEY `msisdn_index` (`msisdn`),   
                KEY `eventdate_index` (`eventDate`)   
            ) ENGINE=MyISAM AUTO_INCREMENT=55925171 DEFAULT CHARSET=latin1

当我创建分区时 -

ALTER TABLE cdr PARTITION BY RANGE (TO_DAYS(eventdate))  (
    PARTITION p01 VALUES LESS THAN (TO_DAYS('2013-09-01')),  
    PARTITION p02 VALUES LESS THAN (TO_DAYS('2013-09-15')),  
    PARTITION p03 VALUES LESS THAN (TO_DAYS('2013-09-30')),   
    PARTITION p04 VALUES LESS THAN (MAXVALUE));

获取

error 1503: A primary key must include all columns in the table's partitioning function

我到处都读到过这方面的内容,但一无所获,所以请告诉我如何对这张表进行分区。我有 20+ 百万条记录。

谢谢。

最佳答案

我已经通过添加带主键的 eventdate 解决了这个问题。

关于mysql - 收到错误 1503 : A primary key must include all columns in the table's partitioning function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20260043/

相关文章:

mysql - Liquibase 主键在 H2 上创建了两次

MySQL #1064 - 你的 SQL 语法有错误

php - 存储 html 模板的最佳方式 (Laravel 5)

mysql - Laravel 中的分区查询

c - 在 C 中获取文件系统创建日期

hadoop - 如何得到最均匀的分区结果?

MySQL Server 无法在 MAMP 中启动 - 目前没有有效的解决方案

php - 检查特定日期时间是否在 mysql 中的两个字段之间

sql - Greenplum中的分区消除

python - 如何根据 Python 中另一个列表的(子列表)索引对列表进行分区