由于未选择活动仓库,对雪花数据库的查询不起作用
Posted
技术标签:
【中文标题】由于未选择活动仓库,对雪花数据库的查询不起作用【英文标题】:Query to Snowflake database isn't working because no active warehouse is selected 【发布时间】:2020-06-01 13:55:02 【问题描述】:我能够通过 R 成功连接到 Snowflake 数据库,但我无法获取数据,因为没有选择活动仓库。以下是错误信息:
当前会话中未选择活动仓库。使用“使用仓库”命令选择一个活动仓库。
这是我正在使用的代码。
con <- DBI::dbConnect(
odbc::odbc(),
UID = user,
PWD = pass,
Server = host,
Warehouse = 'YOUR_WAREHOUSE_NAME',
Driver = "SnowflakeDSIIDriver",
Role = role,
Database = database,
Autthenticator = "external browser"
)
dbGetQuery(con, "SELECT * FROM MY_TABLE LIMIT 100")
我的连接和查询基于RStudio Community,但我没有任何运气。我还尝试在查询中使用“使用仓库 MY_WAREHOUSE”命令,但没有任何运气。
注意:我可以通过 Python 成功连接并查询数据,所以我认为这是 R 特定的问题。
【问题讨论】:
1) 可能你的角色没有使用这个仓库的权限。你确定你使用了正确的角色吗? 2) 如果这与 R 有关,您是否尝试将“USE WAREHOUSE MY_WAREHOUSE”语句作为单独的语句运行? (从 R 中)运行此命令的结果是什么? 1) 我使用的角色与我的 Python 连接相同。我还在 R 中切换了角色以进行检查,我遇到了同样的错误。 2)我也在我的查询中使用它作为单独的语句。dbGetQuery(con, "SELECT * FROM MY_TABLE LIMIT 10", "USE WAREHOUSE MY_WAREHOUSE")
我收到以下错误 Error: nanodbc/nanodbc.cpp:1617: 57P03: No active warehouse selected in the current session。选择一个带有“使用仓库”的活动仓库
一些其他的尝试:1)如果你使用另一个仓库会发生什么? 2)这可能是仓库名称大小写的名称解析问题 - 因此,如果未将其定义为大写,则可能将您的引用包装在“我也遇到过这个问题。这可能不是最好的答案,因为我只是在测试一些开发代码(在 python 中),但我不得不发出:
GRANT USAGE ON WAREHOUSE my_warehouse TO ROLE writer_role;
我用来连接到 Snowflake 的用户是其中的成员,然后我能够写入表。
【讨论】:
【参考方案2】:-
恕我直言,如果 python 等效代码没问题,这似乎是一个 R 错误
您的角色可以分配一个默认仓库,可能是空白的,需要在连接时指定;并且 R 代码中的错误正在阻止它被设置?
【讨论】:
好的,睡了一夜之后,我想出了如何连接到正确的数据表。 RStudio 正在保存我的旧 Snowflake 连接字符串,因此每当我进行更改时,它都不会影响连接。所以我删除了所有连接字符串并使用了正确的。此外,当我使用密码和身份验证器时,似乎存在问题。当我只使用身份验证器时,没关系。但是当我同时使用两者时,我无法正确连接。 (我的用户电子邮件和用户 ID 是两个不同的电子邮件。这可能会影响它。)好消息是我现在可以连接。谢谢!以上是关于由于未选择活动仓库,对雪花数据库的查询不起作用的主要内容,如果未能解决你的问题,请参考以下文章
当前会话中未选择活动仓库。使用“使用仓库”命令选择一个活动仓库
Snowflake METADATA$FILENAME 关键字在 snowsql(Unix 命令提示符)中不起作用,但在雪花 UI 中起作用