1526: ER_NO_PARTITION_FOR_GIVEN_VALUE: Table has no partition for value(値に対応するパーティションがない)
MySQL意味
挿入しようとしている行のパーティションキー値が、定義済みのどのパーティションにも該当しない。RANGE または LIST パーティショニングで、受け取った値をカバーするパーティションがないため挿入が失敗する。
原因
RANGE パーティショニングで MAXVALUE パーティションを定義せずに最上限を超える値 (例: 将来の日付) を挿入した、LIST パーティショニングで列挙されていない値が来た。新しい期間のパーティションが期限内に追加されなかった時間パーティション表でよく見られる。
対処方法
値をカバーするパーティションを追加する。RANGE の新しい上位パーティション: ALTER TABLE my_table ADD PARTITION (PARTITION p2026 VALUES LESS THAN (2027)); 受け皿となるパーティションとして、RANGE では MAXVALUE を、LIST では該当する値を定義する。時間ベースのテーブルでは、パーティションを自動追加するメンテナンスジョブ (event/scheduler) を設定する。
同じデータベースの他の項目
- 1170ER_BLOB_KEY_WITHOUT_LENGTH: BLOB/TEXT column used in key specification without a key length(キー長を指定せずに BLOB/TEXT 列をキーに使用)
- 1592ER_BINLOG_UNSAFE_STATEMENT: Unsafe statement written to the binary log(安全でない文がバイナリログに書き込まれた)
- 3140ER_INVALID_JSON_TEXT: Invalid JSON text(無効な JSON テキスト)
- 1049Unknown database 'name'(不明なデータベース 'name')
- 1364Field 'name' doesn't have a default value(フィールド 'name' にデフォルト値がない)
- 1206The total number of locks exceeds the lock table size(ロックの総数がロックテーブルのサイズを超えた)
- 1236Got fatal error 1236 from master when reading data from binary log(バイナリログの読み取り中にマスターから致命的エラー 1236)