次の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'))
);
私が行う必要があるのは、date + 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