Оператор CREATE TABLE
для разделения таблицы работает, как и ожидалось, без ошибок.разделы и подразделы
CREATE TABLE `ox_data_archive_20120108` (
`id` bigint(20) unsigned NOT NULL,
`creativeid` int unsigned NOT NULL,
`zoneid` int unsigned NOT NULL,
`datetime` datetime NOT NULL
) PARTITION BY LIST(to_days(datetime)) (
PARTITION `1Jan10` VALUES IN (to_days('2010-01-01')),
PARTITION `2Jan10` VALUES IN (to_days('2010-01-02')),
PARTITION `3Jan10` VALUES IN (to_days('2010-01-03'))
);
Что мне нужно сделать, так это создать дочерние элементы на основе даты + zoneid. Я попытался следующие:
CREATE TABLE mypart (
`id` bigint(20) unsigned NOT NULL,
`creativeid` int unsigned NOT NULL,
`zoneid` int unsigned NOT NULL,
`datetime` datetime NOT NULL
) PARTITION BY LIST(to_days(datetime))
SUBPARTITION BY KEY(zoneid) (
PARTITION `1Jan10` VALUES IN (to_days('2010-01-01'))
(Subpartition s1, Subpartition s2),
PARTITION `2Jan10` VALUES IN (to_days('2010-01-02'))
(Subpartition s3, Subpartition s4),
PARTITION `3Jan10` VALUES IN (to_days('2010-01-03'))
(Subpartition s5, Subpartition s6)
);
Вставка в эту таблицу:
INSERT INTO mypart VALUES (1, 2, 3, '2012-01-31 04:10:03');
результаты в следующей ошибки:
ERROR 1526 (HY000): Table has no partition for value 734898
Мой запрос рассчитывает использовать ZoneId подсекции, основанный на свиданиях. Является ли это возможным?
Развернуть «не работает должным образом». Что вы ожидаете? Что на самом деле происходит? – outis
Невозможно вставить записи в эту таблицу # вставить в mypart значения (1, 2, 3, '2012-01-31 04:10:03'); # ERROR 1526 (HY000): Таблица не имеет разбиения на значение 734898 – shantanuo
Пожалуйста, обновите вопрос с сообщением об ошибке. В целом, ответьте на просьбы о разъяснениях, обновив сообщение, а не отвечая комментарием. Во-первых, вопрос должен быть понятным без чтения комментариев. Для другого SO - это QA и сайт, а не форум, и комментарии не предназначены (и не подходят) для обсуждений. – outis