Table has no partition for value 20190507

2020-09-27 17:51:27 浏览数 (2)

背景

在我更新表字段的时候,

代码语言:javascript复制
update table_name set date ='20190507'

发现报错:

代码语言:javascript复制
[Err] 1526 - Table has no partition for value 20190507

分析

从报错看,partition 字段,敏感的想到,分区表。所以,看下这个表的来历(因为这个表不是我创建的)

发现这个表是根据日期字段的范围进行分区(即 四大分区类型的,Range)。

然后发现这个表最大的字段分区为20180932 (VALUES LESS THAN 中指定的值在判断时候是不包含的,所以是32号 )。

结论,就是说这个分区表不存在。

解决

创建分区表

代码语言:javascript复制
ALTER TABLE table_name ADD PARTITION (PARTITION p_20190508 VALUES LESS THAN (20190508));

执行成功后:

代码语言:javascript复制
受影响的行: 0
时间: 0.178s

反思

如果没有进行适当的处理,将会报错。所以在进行 RANGE 分区时,要思考这种情况。一般情况下,就时在最后添加一个 MAXVALUE 分区,如下:

代码语言:javascript复制
PARTITION p_max VALUES LESS THAN MAXVALUE

参考

0 人点赞