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

调用Snowflake REST API时遇仓库指定异常问题

问题描述

使用Snowflake官方提供的Postman模板发送REST API查询时,明明请求体已包含仓库名称,却仍报错要求指定仓库。

错误信息

{"code": "391920",
"message": "Unable to run the command. You must specify the warehouse to use by either setting the warehouse field in the body of the request or by setting the DEFAULT_NAMESPACE property for the current user.",
"sqlState": "57P03",
"statementHandle": "01b1f84a-3202-3c31-0000-00019b2e60d5"}

完整请求(账号和token已做修改)

curl --location 'https://ev19561.ap-southeast-2.snowflakecomputing.com/api/v2/statements?requestId=8e80d974-6a9d-4d59-8338-5e2aa4f75f74&async=false' \
--header 'User-Agent: applicationName/applicationVersion' \
--header 'X-Snowflake-Authorization-Token-Type: KEYPAIR_JWT' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJFVjE5NTYwLlNFUkdaQURPUi5TSEEyNTY6Smg3TjJrbnMyaWtJMnZ0eVpnbzljYlU0OW9GbWFGa01sbVZ4RGRLbTdwUT0iLCJzdWIiOiJFVjE5NTYwLlNFUkdaQURPUiIsImlhdCI6MTcwNjQzODU4OCwiZXhwIjoxNzA2NTI0OTg4fQ.IjV2e80fNLJbIkNM6AkYLY6gx_mpmKqfKMf6D9gpW2i6WUTOVwIWAZTMBL-A1jljtLaUjn7YJY0D0RmOOaJZTJvitCLs2jviCSlHGNQx9S-qZbdGYeUQLhTG2Aj0H_dCRwDQziqkypXO64PElrFut2tV1CMUL2y80lzrMdusJqe9pW7xXrcnl_8c_xDkHp41IMtSfA420rNaeeo2tygjFbu0Ly_Iev9RAyzV69-9aLWr_eCFrkKASwrppo6_vjIEjM3zNGe-hHe8SwUTSijpCXVBh8cgYqA0xthwB-BlsRh8yankSI6n2oBZfPjVYbpBVqoAnijNbPcw8sChYYg' \
--data '{
    "statement": "select top 100 * from DB1.SCH1.customer",
    "timeout": "1000",
    "database": "DB1",
    "schema": "SCH1",
    "warehouse": "WH",
    "role": "TEST_ROLE",
    "bindings": {},
    "parameters": {}
}
'
排查与解决方法
  • 核对仓库名称大小写:Snowflake标识符默认区分大小写,确认请求体中的WH与实际仓库名称完全一致,必要时用双引号包裹(如"WH")。
  • 验证角色权限:确保TEST_ROLE拥有目标仓库的USAGE权限,执行以下SQL授权:
    GRANT USAGE ON WAREHOUSE WH TO ROLE TEST_ROLE;
    
  • 检查JSON格式合法性:用JSON校验工具确认请求体无语法错误(如逗号遗漏、引号不匹配)。
  • 设置用户默认仓库:执行以下SQL给当前用户绑定默认仓库,避免每次请求都需指定:
    ALTER USER YOUR_USER_NAME SET DEFAULT_WAREHOUSE = WH;
    
  • 确认JWT关联角色:解析JWT令牌,确保其关联的角色为TEST_ROLE,避免令牌角色无仓库访问权限。
  • SQL中强制指定仓库:在查询语句开头添加仓库指定语句,示例:
    USE WAREHOUSE WH;
    select top 100 * from DB1.SCH1.customer;
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 06:27:07