在 EC2 实例上的 Amazon Linux 中为 MSSQL Server 安装 ODBC 驱动程序 13

在 EC2 实例上的 Amazon Linux 中为 MSSQL Server 安装 ODBC 驱动程序 13

问题:

需要从 PHP 代码访问并执行 MSSQL 存储过程。

版本详细信息:

本地开发机器 -Windows 10,带有 XAMPP 和 PHP 7

生产系统 -带有 PHP 5.3.2 的 Amazon AWS AMI Linux

我的要求是:

想要使用 odbc 连接访问我本地和实时服务器上的 MSSQL。

我对 LIVE 服务器的尝试:

想要确保 LIVE 服务器与包兼容并且能够正确安装所需的包。

因此,从以下步骤开始:

1)查看下面的链接,我发现我们需要使用 ODBC 来更快地访问数据: https://stackoverflow.com/a/31105561

2) 尝试在 Amazon Linux 上安装以下 ODBC 驱动程序,如下所示:

(假设 RHEL 6 安装程序也可以在 Amazon Linux 上运行。如果我错了,请告诉我)

  • 适用于 SQL Server 的 Microsoft ODBC 驱动程序 13.1 - Windows + Linux

sudo su curl packages.microsoft.com/config/rhel/6/prod.repo > /etc/yum.repos.d/mssql-release.repo

出口

sudo yum remove unixODBC #避免冲突

sudo ACCEPT_EULA=Y yum 安装 msodbcsql-13.0.1.0-1 mssql-tools

但安装程序失败,显示以下错误:

Error: msodbcsql conflicts with unixODBC-utf16-2.3.1-1.x86_64
Error: Package: msodbcsql-13.1.4.0-1.x86_64 (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

3)因此,尝试使用安装unixODBChttp://www.unixodbc.org/

- Downloaded the package via curl
- gunzip unixODBC*.tar.gz
- tar xvf unixODBC*.tar

然后,使用以下命令进行安装:

./configure
make
make install 

4) 重新启动 httpd 服务并再次尝试步骤 2,但安装程序失败,并出现第 2 点中提到的相同错误。

我对本地机器的尝试:

  1. 下载了适用于 SQL Server 的 Microsoft ODBC Driver 13.1 - Windows + Linux 的 .msi 文件
  2. 在我的计算机上安装了相同的程序并重新启动了 xampp apache。但仍然Uncaught PDOException: could not find driver

更新:通过在 php.ini 中添加扩展 dll 并重新启动服务器解决了本地系统中的问题。

有人能告诉我在 LIVE 配置中我错过了什么吗?

答案1

解决方法

由于安装的直接链接不起作用,因此使用以下命令下载了 rpm 文件进行离线安装:

sudo mkdir /tmp/RedHat6Packages

sudo curl https://packages.microsoft.com/rhel/6/prod/msodbcsql-13.1.4.0-1.x86_64.rpm > /tmp/RedHat6Packages/msodbcsql-13.1.4.0-1.x86_64.rpm

sudo curl https://packages.microsoft.com/rhel/6/prod/mssql-tools-14.0.4.0-1.x86_64.rpm > /tmp/RedHat6Packages/mssql-tools-14.0.4.0-1.x86_64.rpm

尝试使用以下命令进行离线安装: cd /tmp/RedHat6Packages/ sudo yum localinstall msodbcsql-13.1.4.0-1.x86_64.rpm sudo yum localinstall mssql-tools-14.0.4.0-1.x86_64.rpm

但仍然出现相同的错误: error: Failed dependencies: libodbcinst.so.2()(64bit) is needed by msodbcsql-13.1.4.0-1.x86_64 unixODBC >= 2.3.1 is needed by msodbcsql-13.1.4.0-1.x86_64 找到检查包的命令: sudo yum provides /usr/lib64/libodbcinst.so.2

这显示以下警告:

Loaded plugins: priorities, update-motd, upgrade-helper
2 packages excluded due to repository priority protections
unixODBC-2.2.14-14.7.amzn1.x86_64 : A complete ODBC driver manager for Linux
Repo        : amzn-main
Matched from:
Filename    : /usr/lib64/libodbcinst.so.2    

unixODBC-utf16-2.3.1-1.x86_64 : ODBC driver manager with UTF16 character conversion enabled by default
Repo        : packages-microsoft-com-prod
Matched from:
Filename    : /usr/lib64/libodbcinst.so.2

直接跳到解决方案

检查了下面提到的链接:

这是什么意思:由于存储库优先级保护而排除的软件包

通过编辑/etc/yum/pluginconf.d/priorities.conf和设置禁用优先级enabled = 0

能够使用上述相同的命令安装驱动程序: cd /tmp/RedHat6Packages/ sudo yum localinstall msodbcsql-13.1.4.0-1.x86_64.rpm sudo yum localinstall mssql-tools-14.0.4.0-1.x86_64.rpm

仍然无法弄清楚扩展文件在哪里,但却产生了其他问题(在 Amazon EC2 Linux 上安装 MSSQL ODBC 13.1 后的后续步骤)作为这个问题的目的已经得到解决。

作为 Linux 的新手(尤其是从 Windows 迁移过来的),找到上述解决方案确实很困难。希望它能帮助到别人!

答案2

以下是适用于 Amazon Linux AMI 的命令:

curl https://packages.microsoft.com/config/rhel/7/prod.repo | sudo tee /etc/yum.repos.d/msprod.repo1
sudo yum remove unixODBC-utf16 unixODBC-utf16-devel
sudo yum info unixODBC*
sudo yum install mssql-tools unixODBC-devel
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' | tee -a ~/.bash_profile && source ~/.bash_profile

来源:在 Linux 上安装 SQL Server 命令行工具 sqlcmd 和 bcp


否则,请尝试安装不冲突的旧版本邮政例如

sudo ACCEPT_EULA=Y yum install msodbcsql-13.0.1.0-1 mssql-tools-14.0.2.0-1

相关内容