【问题标题】:How do I install the ODBC driver for Snowflake successfully on an M1 Apple Silicon Mac?如何在 M1 Apple Silicon Mac 上成功安装 Snowflake 的 ODBC 驱动程序?
【发布时间】:2021-11-15 09:12:51
【问题描述】:

我在让 Snowflake 的 ODBC 驱动程序在运行 Big Sur 的 M1 Apple Silicon Mac 上工作时遇到问题。

成功关注the instructions on Snowflake's website 使我能够使用 DSN 从命令行(使用 iodbctest)测试驱动程序导致以下错误:

1: SQLDriverConnect = [iODBC][Driver Manager]dlopen(/opt/snowflake/snowflakeodbc/lib/universal/libSnowflake.dylib, 6): no suitable image found.  Did find:
    /opt/snowflake/snowflakeodbc/lib/universal/libSnowflake.dylib: no matching architecture in universal wrapper
    /opt/snowfl (0) SQLSTATE=00000
2: SQLDriverConnect = [iODBC][Driver Manager]Specified driver could not be loaded (0) SQLSTATE=IM003

我的 Snowflake 驱动程序安装到 /opt/snowflake/snowflakeodbc,所以这是正确的——我怀疑这是一个 M1 问题。我正在使用the download mirror here 提供的驱动程序的2.24.1 版本,/etc/odbcinst.ini 中驱动程序的路径是/opt/snowflake/snowflakeodbc/lib/universal/libSnowflake.dylib(它存在并且根据我的所有研究似乎应该是正确的)。

当我在 R 中通过 DBI 运行连接时,我得到一个完全不同的错误:

 Error: nanodbc/nanodbc.cpp:1021: 00000: 
[Snowflake][ODBC] (11560) Unable to locate SQLGetPrivateProfileString function. 

在其他 StackOverflow 帖子中,人们引用了上述错误,这意味着缺少某种类型的库(IODBC 配置不正确?),但我尝试了很多方法都无济于事。任何指导都会很棒。

【问题讨论】:

  • 尚不支持,但很快??
  • 您好,您找到解决此问题的任何方法了吗?

标签: r odbc snowflake-cloud-data-platform apple-m1 apple-silicon


【解决方案1】:

我们的一位团队成员建议了以下步骤,它适用于 Apple M1 系列

  1. 安装最新的雪花驱动

  2. 使用 cmd 卸载基于 m1 的自制软件 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall.sh)"

  3. 安装基于英特尔的自制软件 - 完成后重启终端 arch -x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

  4. 重新安装 unixodbc arch -x86_64 brew install unixodbc

  5. 测试 isql -v Pattern

  6. 在用于连接雪花的 database.yml 文件中进行以下更改- 将“dsn:”替换为以下内容 conn_str: "Driver={PATH};Locale=en-US;uid={USER_NAME};pwd= {PASSWORD};server=<yours>.snowflakecomputing.com;role=<ROLE>;charset=UTF-8;warehouse=<WAREHOUSE>;database=<DATABASE>;schema=<SCHEMA>;"

【讨论】:

    【解决方案2】:

    有人让这个工作吗?我使用 excel w odbc 来刷新雪花文件,并尝试了多种方法来移动驱动程序等,并遵循雪花指令,但从未奏效。我确实得到了运行 windows arm 的相似之处,但更愿意在 Mac OS 中执行此操作

    【讨论】:

    • 您没有查看链接吗?仍然不支持
    • 这并不能真正回答问题。如果您有其他问题,可以点击 进行提问。要在此问题有新答案时收到通知,您可以follow this question。一旦你有足够的reputation,你也可以add a bounty 来引起对这个问题的更多关注。 - From Review
    【解决方案3】:

    对此进行了更多修改,并意识到这是 .dmgs 的安装路径和simba.snowflake.ini 中的预设路径的产物。

    您需要将 Snowflake 驱动程序指向 iODBC dylib(根据文档中的(sideswiping 语句)[https://docs.snowflake.com/en/user-guide/odbc-mac.html#iodbc] ) -- 驱动程序最初配置为在路径上的文件夹中查找 ODBC dylib(不是 iODBC)。

    当您安装 iODBC 驱动程序时,请确认它已安装到 /usr/local/iODBC(这是我的 Silicon Mac 安装它的位置)——并且 /usr/local/iODBC/lib 中包含 libiodbc.dylib。如果是这样,导航到您安装的雪花驱动程序目录(应该是/etc/snowflake)并更改simba.snowflake.ini 文件(/etc/snowflake/snowflake/snowflakeodbc/universal/simba.snowflake.ini)。您想取消注释并将最后一行更改为未注释并指向 iODBC dylib 的完整路径(而不是默认值,即 ODBC dylib)。

    # Darwin specific ODBCInstLib
    #   iODBC
    ODBCInstLib=/usr/local/iODBC/lib/libiodbcinst.dylib
    
    

    确保注释掉任何其他 ODBCInstLib 行,以便只配置一个。这样您就可以在 M1 Mac 上建立和运行 Snowflake 的连接。

    【讨论】:

    • 但请记住,这不是受支持的配置,因此实施此配置将由用户承担风险。
    • @NickW 我认为这是配置文件中的一个错误,因为您只是将 simba.snowflake.ini 文件更改为指向 iODBC(这......令人困惑的是, file 将文件路径注释为,即使它指向 ODBC 安装)。但不管怎样都是好旗
    • 感谢您的回答,但/etc/snowflake/... 没有 Snowflake 驱动程序目录。根据documentation Snowflake 安装到/opt/snowflake/snowflakeodbc/Library/ODBC
    • @Simon 这样的话,你可以在/opt/snowflake/snowflakeodbc/lib/universal找到simba.snowflake.ini文件
    【解决方案4】:

    Big Sur 是 macOS v11.n

    Snowflake 支持 macOS 10.14 和 10.15 Supported OSs

    所以你正在尝试做的事情不受支持并且不太可能工作

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-08
      • 2021-03-11
      • 2022-01-06
      • 2021-04-21
      • 2021-04-03
      • 2021-03-02
      • 2022-01-22
      相关资源
      最近更新 更多