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 (binary log에 안전하지 않은 문장 기록)
- 3140ER_INVALID_JSON_TEXT: Invalid JSON text
- 1049Unknown database 'name'
- 1364Field 'name' doesn't have a default value (필드에 기본값 없음)
- 1206The total number of locks exceeds the lock table size (전체 락 수가 락 테이블 크기 초과)
- 1236Got fatal error 1236 from master when reading data from binary log (binary log 읽기 중 master로부터 치명적 오류 1236 수신)