Назад | Перейти на главную страницу

Установка драйвера ODBC 13 для SQL Server в Amazon Linux на инстансе EC2

Проблема:

Необходимо получить доступ и выполнить хранимую процедуру MSSQL из кода PHP.

Детали версии:

Машина локальной разработки - Windows 10 с XAMPP с PHP 7

Производственная система - Amazon AWS AMI Linux с PHP 5.3.2

Что мне нужно:

Хотите использовать соединение odbc для доступа к MSSQL на моем ЛОКАЛЬНОМ, а также РЕАЛЬНОМ сервере.

Что я пробовал для LIVE сервера:

Хотел убедиться, что LIVE-сервер совместим с пакетами, и что я могу правильно установить необходимые пакеты.

Следовательно, начали со следующих шагов:

1) Посмотрел ссылку ниже, где я обнаружил, что нам нужно использовать ODBC для более быстрого доступа к данным: https://stackoverflow.com/a/31105561

2) Пытался установить следующий драйвер ODBC на Amazon Linux, как указано ниже:

(Предполагается, что установщик RHEL 6 будет работать и в Amazon 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 install 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) Следовательно, попытался установить unixODBC, используя http://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. Загрузил файл .msi для драйвера Microsoft ODBC 13.1 для SQL Server - Windows + Linux
  2. Установил то же самое на моей машине и перезапустил xampp apache. Но я все еще получаю Uncaught PDOException: could not find driver

ОБНОВИТЬ: Решена проблема в локальной системе, добавив расширение dll в php.ini и перезапустив сервер.

Может ли кто-нибудь сообщить мне, что я пропустил в конфигурации LIVE?

Подход к решению

Поскольку прямая ссылка для установки не работала, были загружены файлы 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

Все еще не могу понять, где находятся файлы расширений, но создал другой вопрос (Дальнейшие действия после установки MSSQL ODBC 13.1 в Amazon EC2 Linux) так как цель этого вопроса решена.

Как новичку в Linux (особенно, который перешел с Windows), было действительно сложно найти вышеуказанное решение. Надеюсь, это кому-то поможет !!

Вот команды, которые должны работать для 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

Источник: Установите sqlcmd и bcp инструменты командной строки SQL Server в Linux.


В противном случае попробуйте установить старую версию, которая не противоречит этому Почта, например

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