У меня есть таблица со многими разделами по дате
Я хочу переместить некоторые из самых старых разделов в другую таблицу.
Мне удалось переместить самый старый раздел, следуя инструкции , но когда я пытаюсь переместить больше разделов, я получаю: Код ошибки: 1737. Найдена строка, которая не соответствует разделу
Итак, я удалил самый старый раздел и переместил следующий раздел - но затем строки из первых разделов вернулись в исходную таблицу (я не видел никакой документации для записи, которая go назад ...)
Как я могу переместить три первых раздела в другой Таблица? СПАСИБО
CREATE TABLE `TestPartA` (
`Name` VARCHAR(50) NOT NULL,
`Time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`Slot` INT(11) NOT NULL DEFAULT '-1',
`Text` VARCHAR(50) NOT NULL,
PRIMARY KEY (`Name`, `Text`, `Time`),
INDEX `ClusterTimeIdx` (`Name`, `Time`, `Slot`),
INDEX `Time` (`Time`)
)
PARTITION BY RANGE (TO_DAYS(TIME))
(PARTITION p20190407 VALUES LESS THAN (TO_DAYS('2019-04-07')) ,
PARTITION p20190421 VALUES LESS THAN (TO_DAYS('2019-04-21')) ,
PARTITION p20190428 VALUES LESS THAN (TO_DAYS('2019-04-28')),
PARTITION p20190505 VALUES LESS THAN (TO_DAYS('2019-05-05'))) ;
CREATE TABLE TestPartB LIKE TestPartA;
ALTER TABLE TestPartB REMOVE PARTITIONING;
insert into TestPartA values ('A','2019-04-02',1,'W1');
insert into TestPartA values ('A','2019-04-04',1,'W1');
insert into TestPartA values ('A','2019-04-08',1,'W1');
insert into TestPartA values ('A','2019-04-20',1,'W1');
insert into TestPartA values ('A','2019-05-01',1,'W1');
SELECT PARTITION_NAME, TABLE_ROWS FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_NAME = 'TestPartA';
-- move the first partition
ALTER TABLE TestPartA EXCHANGE PARTITION p20190407 WITH TABLE TestPartB; -- Works GREAT
select * from TestPartA;
select * from TestPartB;
SELECT PARTITION_NAME, TABLE_ROWS FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_NAME = 'TestPartA'; -- this is not working any more - but according to documentation it happens sometimes
--move the second partition
ALTER TABLE TestPartA EXCHANGE PARTITION p20190421 WITH TABLE TestPartB; -- FAILED
ALTER TABLE TestPartA drop PARTITION p20190407;
ALTER TABLE TestPartA EXCHANGE PARTITION p20190421 WITH TABLE TestPartB; -- Succeed but the rows from the first partitions returned to table A
select * from TestPartA;
select * from TestPartB;