苹果 M1 上用于 SQL Server 的 ODBC 驱动程序 17

Posted

技术标签:

【中文标题】苹果 M1 上用于 SQL Server 的 ODBC 驱动程序 17【英文标题】:ODBC Driver 17 for SQL Server on apple M1 【发布时间】:2021-05-04 22:10:53 【问题描述】:

我正在尝试让 SQL Server 的 ODBC 驱动程序 17 工作,但不知何故它不适用于我全新的苹果 M1。 显然我安装了 unixodbc 和驱动程序,但启动它们不起作用。看起来 odbc 驱动程序还没有为架构做好准备(见下面的输出)。微软驱动程序甚至看起来都不是问题,但来自 unixodbc 的通用库 - 我正确吗?

如果可以自己编译,有什么想法吗?

XXX@M1 ~ % odbcinst -j
unixODBC 2.3.9
DRIVERS............: /opt/homebrew/etc/odbcinst.ini
SYSTEM DATA SOURCES: /opt/homebrew/etc/odbc.ini
FILE DATA SOURCES..: /opt/homebrew/etc/ODBCDataSources
USER DATA SOURCES..: /Users/XXX/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8
XXX@M1 ~ % sqlcmd
dyld: Library not loaded: /usr/local/lib/libodbc.2.dylib
  Referenced from: /opt/homebrew/bin/sqlcmd
  Reason: no suitable image found.  Did find:
    /usr/local/lib/libodbc.2.dylib: mach-o, but wrong architecture
    /usr/local/lib/libodbc.2.dylib: mach-o, but wrong architecture
    /opt/homebrew/Cellar/unixodbc/2.3.9/lib/libodbc.2.dylib: mach-o, but wrong architecture
    /opt/homebrew/Cellar/unixodbc/2.3.9/lib/libodbc.2.dylib: mach-o, but wrong architecture

【问题讨论】:

【参考方案1】:

我不熟悉 odbcinst,但一般来说,在 Apple Silicon (M1) 上从终端运行时,如果库不是通用的,您有两种选择:

    将终端设置为在 Rosetta2 上运行,或 在你的命令前加上arch -x86_64

建议你试试

arch -x86_64 odbcinst -j

阅读更多关于此here 的信息。 (是的,链接讲的是 Flutter,但解决方案是一样的。)

【讨论】:

不幸的是,这没有成功。我认为为 arm64 正确安装了 unixODBC,但 Microsoft ODBC 驱动程序没有。 FreeTDS 有效,所以我只是在等待微软解决这个问题(希望这是根本问题......) 但是如果你安装 x86_64 版本的 unixODBC,使用 MS ODBC 驱动程序,并在 Rosetta2 下运行,同时等待 MS 更新驱动程序呢? Rosetta2 非常快,甚至可能比您在旧的基于 Intel 的 Mac 上的执行速度还要快。 (只是一个想法。) 如果我运行选项 2,我会收到此错误。'arch: posix_spawnp: odbcinst: Bad CPU type in executable' 我还尝试使用 Rosetta 复制 iTerm 并重新安装自制软件,但是当我运行 odbcinst -j 时,我仍然看到:驱动程序............:/opt/homebrew/等/odbcinst.ini。我完全迷路了。非常感谢任何帮助。 根据 Microsoft odbc driver for Mac 的 GitHub 页面,他们计划在下一个版本中支持 M1。让我们继续关注

以上是关于苹果 M1 上用于 SQL Server 的 ODBC 驱动程序 17的主要内容,如果未能解决你的问题,请参考以下文章

在 M1 Mac 上的 Azure Data Studio 中构建 SQL Server 数据库项目真的不可能吗?

在苹果 M1 上运行 Linux 虚拟机变得容易了

Linux 能否拿下苹果 M1 阵地?

Linux 能否拿下苹果 M1 阵地?

苹果:两个 M1 Max 拼一块儿,“史上最强 PC 芯片”M1 Ultra 就出来了!

惊叹于苹果M1的强大?华为更早设计的自研核心足以媲美Intel