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(从 master 读取二进制日志数据时收到致命错误 1236)