Copy & Paste Engineer

【Mysql】ERROR 1526 (HY000): Table has no partition for value エラーの解決

ERROR 1526 (HY000): Table has no partition for value エラーの解決

Mysql ERROR 1526 (HY000): Table has no partition for value エラーの解決メモ

原因

パーティションの範囲外の値が指定されている。

解決方法

パーティションの範囲の範囲を増やすことで対応できます。

サンプル

テーブル作成

num < 30 の値を指定のパーティションに入れてくれます

CREATE TABLE `sample` (
    `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT ,
    `num` decimal (6, 4) DEFAULT 0 NOT NULL ,
    PRIMARY KEY (`id`, `num`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4
PARTITION BY RANGE (FLOOR (`num`))(
    PARTITION p0 VALUES LESS THAN (10),
    PARTITION p1 VALUES LESS THAN (20),
    PARTITION p2 VALUES LESS THAN (30)
);

データを入れる(エラー

作成したテーブルにデータを入れてみます。 こうすると 35, 40 とパーティションの範囲外の30以上の値はエラーになります。

INSERT INTO `sample` (`num`)
values (5)
, (10)
, (15)
, (20)
, (25)
, (30)
, (35)
, (40);

パーティションを追加(解決

30 以上の値が入るパーティションを追加します。

ALTER TABLE `sample` ADD PARTITION (PARTITION pmax VALUES LESS THAN (MAXVALUE));

MAXVALUE を指定すると列の最大値以下の値を指定ができます。

参考