调用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
相关产品推荐
相关产品推荐

