创建获取用户帖子点赞数RPC函数后调用提示需刷新Schema缓存求助
解决RPC函数调用时的Schema缓存提示问题
问题分析
你遇到的提示说明前端使用的Schema缓存和数据库中最新的函数定义不匹配,同时你的函数还存在参数命名冲突的潜在问题:PostgreSQL中当参数名与查询中的字段名(或表别名)重复时,会优先解析为字段,导致逻辑可能不符合预期。
解决步骤
修正函数定义,避免命名冲突
将参数名修改为带前缀的形式(比如p_userId),同时添加stable属性(只读函数推荐添加,提升缓存效率):create or replace function get_number_of_posts_by_user(p_userId uuid) returns integer as $$ SELECT count(pl.id) FROM auth.users au join posts p on p.user_id = au.id join post_likes pl on pl.post_id = p.id where au.id = p_userId $$ language sql stable;手动刷新Schema缓存
执行以下SQL命令强制刷新PostgREST的Schema缓存(如果使用的是PostgREST类的RPC服务):NOTIFY pgrst, 'reload schema';如果是使用Supabase等平台,也可以直接在SQL编辑器右上角点击「刷新Schema」按钮。
确认函数执行权限
确保前端用户对应的数据库角色有该函数的执行权限,比如给认证用户授权:GRANT EXECUTE ON FUNCTION get_number_of_posts_by_user(uuid) TO authenticated;
内容的提问来源于stack exchange,提问作者Richi
相关产品推荐
相关产品推荐

