Hasura创建computed field报no schema has been selected错误如何解决
问题解决方案
报错原因
该报错是PostgreSQL执行函数创建语句时未明确指定归属schema,且当前会话的search_path参数未包含可写入的目标schema导致的。
解决步骤
1. 修正SQL函数写法
给函数和表加上明确的schema前缀,同时注意驼峰字段名需要用双引号包裹(PostgreSQL默认会将未加双引号的标识符转为小写,会导致找不到驼峰命名的字段)。如果你的users表存放在默认的public schema下,修正后的SQL如下:
CREATE FUNCTION public.author_full_name(user_row public.users) RETURNS TEXT AS $$ SELECT user_row."firstName" || ' ' || user_row."lastName" $$ LANGUAGE sql STABLE;
如果你的users表在其他schema下,把上述SQL中的public替换为实际的schema名称即可。
2. Hasura控制台执行配置
在Hasura控制台运行SQL时,需要提前配置正确的执行参数:
- 进入「Data」页面选择对应的数据源,点击顶部「SQL」标签
- 在SQL输入框下方的「Schema」下拉菜单中,选择
users表所在的schema - 勾选「Track this function」选项,方便后续直接绑定为computed field
- 执行SQL即可完成函数创建
3. 权限排查(若仍报错)
如果执行后依然有权限相关报错,可先给数据库用户授予对应schema的创建权限:
GRANT CREATE ON SCHEMA public TO <Hasura使用的数据库用户名>;
Hasura默认使用的数据库用户通常为postgres或者hasura_default,按需替换即可。
后续Computed Field绑定操作
函数创建完成后,进入users表的「Modify」页面,找到「Computed fields」板块,点击「Add computed field」,自定义字段名称(例如full_name),选择刚才创建的author_full_name函数,保存后即可使用该计算字段。
内容的提问来源于stack exchange,提问作者Lord Zeus
相关产品推荐
相关产品推荐

