You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Hasura中使用GraphQL更新users表报错:'update_users'无'_set'参数

Hasura更新用户表时'_set'参数不存在的错误解决

问题场景

我尝试在Hasura中更新users表,根据主键id匹配行,更新nullable且unique的account_id字段,编写的GraphQL mutation及请求代码如下:

const query = `mutation updateAccountId($id: String!, $account_id: String) {
  update_users(where: {id: {_eq: $id}}, _set: {account_id: $account_id}){
    affected_rows
  }
}`;

fetch("https://xyz.hasura.app/v1/graphql", {
  method: "post",
  headers: {
    "content-type": "application/json",
    Authorization: `Bearer ${token}`,
  },
  body: JSON.stringify({
    query,
    variables: {
      id: "P9gc6WanL9YAy7JdD6pEbcfULYt2",
      account_id: "3afc4fds2ds4",
    },
  }),
}).then((response) => {
  console.log(response);
});

多次执行后返回错误:

{
    "errors": [
        {
            "extensions": {
                "code": "validation-failed",
                "path": "$.selectionSet.update_users"
            },
            "message": "'update_users' has no argument named '_set'"
        }
    ]
}

解决方法

方法1:使用主键单条更新(推荐)

由于是通过主键定位单条记录,直接使用update_users_by_pk方法更高效,该方法原生支持_set参数:

const query = `mutation updateAccountId($id: String!, $account_id: String) {
  update_users_by_pk(pk_columns: {id: $id}, _set: {account_id: $account_id}){
    affected_rows
    id
    account_id
  }
}`;
  • pk_columns:指定主键匹配条件,精准定位单条记录
  • 返回字段可按需添加,方便验证更新结果

方法2:排查批量更新的权限与配置

如果坚持使用update_users批量更新方法,需确认以下两点:

  • 登录Hasura控制台,检查users表的更新权限是否开启,且权限规则允许使用_set操作
  • 确认Hasura版本支持批量更新的_set语法(v1.0及以上版本均支持)

也可以通过Hasura控制台的GraphQL Explorer查看update_users的参数结构,确认是否包含_set参数,快速定位是语法问题还是权限配置问题。

内容的提问来源于stack exchange,提问作者mused

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 21:20:16