PostgreSQL 14调用partman.create_parent()函数报错不存在求助
排查步骤
确认pg_partman扩展已正确安装
执行以下SQL检查扩展是否存在:SELECT * FROM pg_extension WHERE extname = 'pg_partman';如果无返回结果,说明未安装,需使用超级用户执行安装命令:
CREATE EXTENSION pg_partman;确认执行SQL的用户是授权的partman_user
你已给partman_user授权,但如果执行SQL时使用的是其他用户(比如postgres),该用户可能无权限访问partman的函数。切换到partman_user后重新执行SQL。检查pg_partman版本与PostgreSQL 14的兼容性
PostgreSQL 14需要搭配pg_partman 4.0及以上版本,旧版本(如3.x)不兼容PG14,会导致函数不存在或参数不匹配。执行以下SQL查看版本:SELECT partman.version();若版本低于4.0,需升级pg_partman到兼容版本。
验证partman.create_parent函数是否存在于partman schema
执行以下SQL确认函数位置:SELECT proname, nspname FROM pg_proc JOIN pg_namespace ON pg_proc.pronamespace = pg_namespace.oid WHERE proname = 'create_parent';若返回的nspname不是partman,说明函数不在预期schema下,需检查安装过程是否有误。
尝试显式指定参数类型
虽然通常无需显式转换,但可以尝试给参数添加类型转换,排除类型匹配问题:SELECT partman.create_parent( p_parent_table := 'public.test_table'::text, p_control := 'last_seen'::text, p_interval := '1 day'::text );
内容的提问来源于stack exchange,提问作者alexey
相关产品推荐
相关产品推荐

