install_driver(mysql) не выполнено: невозможно получить функцию состояния DBI. DBI не загружен

Вопрос или проблема

Я установил OTRS из rpm, и веб-установщик /orts/installer.pl останавливается с:

Ошибка во время AJAX общения. Статус: ошибка, Ошибка: Внутренняя ошибка сервера

Apache error_log

install_driver(mysql) не выполнено: Невозможно получить функцию состояния DBI. DBI не загружен.

/opt/otrs/bin/otrs.CheckModules.pl

DBD::mysql…………………..НЕ УДАЛОСЬ! Не все необходимые компоненты для этого модуля установлены правильно.
YAML::XS…………………….Не установлен! (требуется – используйте “perl -MCPAN -e shell;”)

Но sudo zypper install perl-DBD-mysql-4.021-27.2.x86_64.rpm показал Нечего делать. и конфигурация mysql установлена как запрашивает инструкция.

Система SLES 11 SP2 (x86_64) и особенность: Нет подключения к интернету!

Думаю, вопрос в следующем: Почему Perl не находит DBI:mysql, если он установлен?

Обновление

list_the_installed_modules

/usr/lib/perl5/vendor_perl/5.10.0/x86_64-linux-thread-multi/Bundle/DBI.pm
/usr/lib/perl5/vendor_perl/5.10.0/x86_64-linux-thread-multi/Bundle/DBD/mysql.pm
/usr/lib/perl5/vendor_perl/5.10.0/x86_64-linux-thread-multi/DBD/mysql.pm
/usr/lib/perl5/vendor_perl/5.10.0/x86_64-linux-thread-multi/DBD/mysql/GetInfo.pm

Мог ли я установить неправильный rpm?

Это сообщение об ошибке означает, что Perl не может найти модуль DBD::mysql. Поэтому, если пакет rpm установлен, это заставляет меня думать, что вы, возможно, не используете системный Perl.

Можете показать нам:

which perl

а также:

/usr/bin/perl /opt/otrs/bin/otrs.CheckModules.pl

В общем, установка собственного Perl поверх существующего системного Perl – это плохая идея. Это может сломать другие установленные пакеты, которые ожидают определенную версию Perl.

Если вы хотите использовать разные версии Perl на вашей системе, используйте инструменты такие как plenv или perlbrew

Также, OTRS обычно работает с системным Perl на SLES 11.

Оказалось, что perl-DBD-mysql-4.021-27.2.x86_64.rpm был слишком новым для моей версии Perl. Я проверил список пакетов для SLES 11 PS2 (x86_64) и узнал, что это должно быть perl-DBD-mysql-4.008-4.3.x86_64.rpm. Поэтому я удалил установленный:

sudo zypper remove perl-DBD-mysql

Спрашивал в Google и установил perl-DBD-mysql-4.008-4.3.x86_64.rpm. Теперь все работает!

Ответ или решение

У вас возникла проблема при установке OTRS на SLES 11 SP2, и ошибка связана с невозможностью загрузки модуля DBD::mysql. Давайте разберемся в деталях ошибки и найдем оптимальное решение, учитывая контекст и все предоставленные данные.

Проблематика

Вы столкнулись с ошибкой install_driver(mysql) failed: Unable to get DBI state function. DBI not loaded. Эта ошибка указывает на то, что Perl не может найти и использовать модуль DBD::mysql, несмотря на то, что вы его установили через rpm-пакет.

Диагностика

  1. Версия Perl. Вы используете систему SLES 11 SP2, и версия Perl 5.10.0 установлена. Это означает, что ваш Perl может не поддерживать более новые версии модулей, такие как perl-DBD-mysql-4.021-27.2.x86_64.rpm.

  2. Ошибка подключения модуля. Судя по всему, текущая версия модуля DBD::mysql не совместима с вашей версией Perl.

  3. Отсутствие подключения к Интернету ограничивает вас в гибкости поиска и загрузки необходимых пакетов.

Решение

Использование неподходящей версии DBD::mysql стало причиной проблемы. Вы обнаружили, что для вашего окружения требуется более старая версия пакета, а именно perl-DBD-mysql-4.008-4.3.x86_64.rpm. Замена текущей версии модуля на эту более подходящую решает вашу проблему.

Пошаговое руководство

  1. Удаление текущей версии DBD::mysql:

    sudo zypper remove perl-DBD-mysql
  2. Поиск и установка подходящей версии:

    • Найдите и скачайте верную версию perl-DBD-mysql-4.008-4.3.x86_64.rpm.
    • Установите ее с помощью zypper или командой rpm:
      sudo zypper install perl-DBD-mysql-4.008-4.3.x86_64.rpm
  3. Проверка:

    • Убедитесь, что модуль установлен корректно, запустив проверку модулей OTRS:
      /usr/bin/perl /opt/otrs/bin/otrs.CheckModules.pl

Выводы

Важно учитывать совместимость версий программного обеспечения, особенно в средах с ограниченными ресурсами. Также стоит по возможности использовать системный Perl, чтобы избежать конфликта версий. В случае необходимости работы с разными версиями Perl, рекомендуется использовать инструменты, такие как plenv или perlbrew, для управления несколькими версиями Perl на одном сервере.

Следуя этой инструкции, вы минимизируете вероятность возникновения подобных технических трудностей в будущем и обеспечите стабильность работы ваших приложений.

Оцените материал
Добавить комментарий

Капча загружается...