首页 > 解决方案 > 在 Linux Redhat/CentOS 上为 msodbcsql17 安装 unixODBC >= 2.3.1

问题描述

我尝试使用 CentOS/RedHat (Linux) 在 AWS EC2 上安装 msodbcsql17。

这些是我遵循的来自 Microsoft ( LINK ) 的步骤:

sudo su

#Download appropriate package for the OS version
#Choose only ONE of the following, corresponding to your OS version

#RedHat Enterprise Server 6
curl https://packages.microsoft.com/config/rhel/6/prod.repo > /etc/yum.repos.d/mssql-release.repo

#RedHat Enterprise Server 7
curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/mssql-release.repo

exit
sudo yum remove unixODBC-utf16 unixODBC-utf16-devel #to avoid conflicts
sudo ACCEPT_EULA=Y yum install msodbcsql17
# optional: for bcp and sqlcmd
sudo ACCEPT_EULA=Y yum install mssql-tools
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc
# optional: for unixODBC development headers
sudo yum install unixODBC-devel

该指令在安装 msodbcsql17 之前一直有效。我收到以下错误消息:

Error: Package: msodbcsql17 (packages-microsoft-com-prod)
           Requires: unixODBC >= 2.3.1
           Available: unixODBC-2.2.14-14.7.amzn1.i686 (amzn-main)
               unixODBC = 2.2.14-14.7.amzn1

我认为问题是,unixODBC 的最大可用版本低于 2.3.1,但我如何安装 msodbcsql17 以与 Microsoft 连接?

标签: amazon-ec2centosredhatpyodbcunixodbc

解决方案


经过长时间的研究,我想出了一个解决方案:

  1. 从任何来源下载 unixODBC >= 2.3.1,作为 rpm(示例源
  2. 从 Microsoft 下载 msodbcsql17 和 mssql-tool 作为 rpm(链接到 Repo)(在我的例子中是msodbcsql17-17.1.0.1-1.x86_64.rpmmssql-tools-17.1.0.1-1.x86_64.rpm
  3. 通过 ftp(如 FileZilla)将文件传输到 EC2 实例
  4. 使用EC2终端,进入上传文件的目录
  5. 回车sudo rpm -i unixODBC-2.3.1-11.el7.x86_64.rpm安装必要的版本(或许你得把版本号改成上传文件的版本号)
  6. 进入sudo rpm -i msodbcsql17-17.1.0.1-1.x86_64.rpm
  7. 进入sudo rpm -i mssql-tools-17.1.0.1-1.x86_64.rpm

  8. 按照 Microsoft 说明的其余部分,就像在您的问题中一样。

  9. 现在您应该可以在 python 中使用 ODBC 和 pyodbc 了。

代替,您也rpm -i可以使用yum install


更新:请查看@KnudLarsen 的评论!


推荐阅读