Мне нужно разделить таблицу MySQL среди временных данных (поле начинается в следующей таблице).
CREATE TABLE `table1` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`fk_id` bigint(20) NOT NULL,
`begin` bigint(20) NOT NULL,
PRIMARY KEY (`id`),
KEY `FK1E57078DB20EC268` (`fk_id`)
) ENGINE=MyISAM AUTO_INCREMENT=10443288 DEFAULT CHARSET=latin1
Когда я пытаюсь разделить вот так:
alter table table1 partition by range (begin) (
PARTITION until_2010_07 VALUES LESS THAN (1280620800000),
PARTITION 2010_08 VALUES LESS THAN (1283299200000),
PARTITION 2010_09 VALUES LESS THAN (1285891200000),
PARTITION 2010_10 VALUES LESS THAN (1288569600000),
PARTITION 2010_11 VALUES LESS THAN (1291161600000),
PARTITION 2010_12 VALUES LESS THAN (1293840000000),
PARTITION from_2011 VALUES LESS THAN MAXVALUE
);
Я получаю ошибку MySQL: ERROR 1503 (HY000): A PRIMARY KEY must include all columns in the table's partitioning function
Как я понимаю из документа mysql, столбец разделения должен принадлежать первичному ключу.
Проблема для меня заключается в том, что я хочу изменить PRIMARY_KEY на составной, то есть PRIMARY KEY ('id','fk_id','begin')
без изменения существующих столбцов идентификатора (поскольку это поле используется в приложении для генерации закладок, поэтому перенумерация идентификаторов не является опция)
Как я могу изменить PRIMARY_KEY, чтобы я мог выполнить разбиение?