R 中的 ODBC 库 - 获取“未找到数据源名称且未指定默认驱动程序”错误

Posted

技术标签:

【中文标题】R 中的 ODBC 库 - 获取“未找到数据源名称且未指定默认驱动程序”错误【英文标题】:ODBC Library in R - getting "Data source name not found and no default driver specified" Error 【发布时间】:2020-05-15 00:16:26 【问题描述】:

我的驱动程序可以正常工作,因为我完美地使用了 Power BI。我正在切换到 R 进行一些计算,现在这个错误正在蔓延

install.packages("odbc")

    library(odbc)

    con<- dbConnect(odbc::odbc(),
                     driver = "[Cloudera ODBC Driver for Apache Hive]",
                     host = "[Confidential]",
                     Schema = "[Confidential]",
                     user = ("Confidential"),
                     password = ("Confidential"),
                     port = 8443)

我的 ODBC 连接是 64 位

我需要在这里使用特定的连接字符串吗?

【问题讨论】:

我不使用RODBC,但我使用odbcDBI,而且我在任何地方都没有看到驱动程序名称周围的括号。您是否尝试过不带括号的"Cloudera ..."?如果您出于某种原因安装了odbc,我知道它有odbc::odbcListDrivers(),它为您提供了可以使用的逐字字符串。 你是对的,不需要括号。它至少进展到下一个错误,它说从服务器收到意外响应。请确保为连接指定的服务器主机和端口正确,并确认是否应为连接启用 SSL...但这与上一个不同,谢谢! 是的,该端口有效,因为我每天都使用 Power BI 连接到企业数据湖。这是 IT 部门给我们的 好。接下来是你的连接。您在此处的代码未使用您在 ODBC 管理(Windows?)中设置的 ODBC 连接。如果您想使用 那个 配置,您需要按名称引用它,而不是在此处提供所有配置选项。例如,如果它在您的系统 ODBC 配置中命名为 myhive,请尝试使用 con &lt;- DBI::dbConnect(odbc::odbc(), dsn="myhive", UID="myuser", PWD="mypass")。 (这使您可以使用与您的 Power BI 连接相同的 SSL/... 设置。) 完美。把它放到我的 R 中。你能在下面发布你的答案,我会接受吗? 【参考方案1】:

这里有四个问题需要考虑:

    最初,驱动程序周围有支架,需要移除。

    # original
    con<- dbConnect(odbc::odbc(),
                    driver = "[Cloudera ODBC Driver for Apache Hive]", ...)
    # fixed
    con<- dbConnect(odbc::odbc(),
                    driver = "Cloudera ODBC Driver for Apache Hive", ...)
    

    我怀疑错误的标签user=password= 需要更改。根据https://db.rstudio.com/databases/hive/,我认为它们应该分别是UID=PWD=

    由于连接错误提示存在连接加密 (SSL) 问题,因此应向 DBI::dbConnect 提供更多参数以设置正确选项。老实说,我不知道它们是什么,而且我找不到关于它们是什么的文档,所以我忽略了这个问题。关于第 4 期...

    您说您是在 “ODBC 数据源管理器(64 位)”中配置的,它是命名连接的系统范围配置,并且您将此配置用于 Power BI(表示那里的连接良好)。在上面的代码中,您没有使用该系统配置,而是从头开始定义它。由于已知系统配置可以工作,因此您可以使用它而不是重新定义,如

    con <- DBI::dbConnect(odbc::odbc(), dsn = "myhive", UID = "myuser", PWD = "mypass")
    

    其中myhive 是您在 ODBC 数据源管理中为配置指定的名称。

【讨论】:

以上是关于R 中的 ODBC 库 - 获取“未找到数据源名称且未指定默认驱动程序”错误的主要内容,如果未能解决你的问题,请参考以下文章

Odbc 连接 - [ODBC 驱动程序管理器] 未找到数据源名称且未指定默认驱动程序

错误:[Microsoft][ODBC Driver Manager] 未找到数据源名称且未指定默认驱动程序

数据库 - [Microsoft][ODBC Driver Manager] 未找到数据源名称且未指定默认驱动程序

未找到数据源名称?

Pyodbc - “未找到数据源名称,未指定默认驱动程序”

ADODB 连接 - 错误:未找到数据源名称且未指定默认驱动程序