Hasura v2版本未生成常规表查询仅显示connection类型查询求助
Hasura v2 两项异常问题解决方案
1. query_root仅存在table_name_connection查询,无常规查询
原因
Hasura v2在数据库接入、旧版本元数据迁移时,部分场景会默认开启Relay模式,该模式仅暴露符合Relay规范的连接式查询,与v1默认生成常规查询的行为不一致。
解决方法
方案一(控制台修改单数据库配置):
- 进入Hasura控制台,切换到「数据」标签页
- 左侧选中目标数据库,点击顶部的「设置」选项卡
- 找到「GraphQL API 配置」板块,取消勾选「启用 Relay 模式」
- 点击保存后重新加载元数据,即可看到
table_name、table_name_aggregate等常规查询
方案二(全局关闭Relay模式):
在docker-compose.yml的graphql-engine服务环境变量中添加如下配置,重启容器即可生效:
HASURA_GRAPHQL_ENABLE_RELAY_MODE: false
2. 查询返回结果中数字ID被哈希字符串替代
原因
Relay模式要求所有可查询对象具备全局唯一ID,因此会自动生成一个base64编码的全局通用id字段,该字段并非你表中存储的原生数字ID。
解决方法
- 编写查询语句时,不要选择根节点下的通用
id字段,展开目标表的字段列表,选择表中实际存储的原生ID列即可返回正常数字ID - 完成上一步Relay模式关闭操作后,自动生成的全局
id字段会直接消失,后续查询返回的id默认就是原生数字ID
额外建议
你当前使用的v2.0.9属于v2早期版本,建议升级到v2最新稳定版,可规避很多版本特有的兼容性问题。如果修改配置后未生效,可尝试先取消追踪对应表,再重新触发追踪,强制元数据重新生成。
内容的提问来源于stack exchange,提问作者Vitali
相关产品推荐
相关产品推荐

