问题说明
postgresql插入数据时,提示如下语句:
SQL 错误 [23514]: ERROR: no partition of relation "moniter_data_min_29" found for row
Detail: Partition key of the failing row contains (data_time) = (2021-01-08 10:48:06).
问题分析
(当前postgresql的版本是10.5)经排查后发现,插入数据的表中未创建相应的分区表,导致插入的数据无法插入。
PostgreSQL 10 版本当往分区表写入的数据不在分区定义范围内时会报错,无法插入数据,PostgreSQL 11 版本分区表增加了 Default 分区用来存储不满足分区定义范围的数据。
解决办法
为插入的数据创建相应的分区表:
CREATE TABLE moniter_data_min_8_20210108 PARTITION OF moniter_data_min_8 (
CONSTRAINT moniter_data_min_8_20210108_pkey PRIMARY KEY (id)
)FOR VALUES FROM ('2021-01-08 00:00:00') TO ('2021-01-09 00:00:00');
注意:定义的分区表一定需要根据插入的数据的字段进行创建;如:目前我需要插入一条1月8日的分钟数据,那么定义分区规则是:当前数据的这个时间字段的范围是 1月8日00点 到 1月9日00点;
文章转载自程序员小邹,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




