Справочное руководство по MySQL версии 4.1.1-alpha




2.7.4 Проблемы использования интерфейса Perl DBI/DBD


Если Perl сообщает, что не может найти модуль `../mysql/mysql.so', то проблема, возможно, заключается в том, что Perl не может найти динамическую библиотеку `libmysqlclient.so'.

Эту проблему можно устранить, используя любой из следующих методов:

  • Для сборки дистрибутива Msql-Mysql-modules используйте perl Makefile.PL -static -config вместо perl Makefile.PL.

  • Скопируйте `libmysqlclient.so' в каталог, где находятся другие динамические библиотеки (`/usr/lib' или `/lib').

  • Под Linux можно добавить путь к каталогу, где находится `libmysqlclient.so' в файл `/etc/ld.so.conf'.

  • Добавьте каталог, в котором находится `libmysqlclient.so', в переменную окружения LD_RUN_PATH.

    Если вы получаете от DBD-mysql представленные ниже ошибки, то, скорее всего, у вас используется компилятор gcc (или старый бинарный код, скомпилированный с gcc):

    /usr/bin/perl: can't resolve symbol '__moddi3' /usr/bin/perl: can't resolve symbol '__divdi3'

    Добавьте в команду линкования при сборке библиотеки `mysql.so', -L/usr/lib/gcc-lib/... -lgcc (нужно проверить вывод из make для `mysql.so' при компиляции клиента Perl). Опция -L должна указывать путь к каталогу, где находится `libgcc.a' в вашей системе.

    Еще одна причина появления ошибок может заключаться в том, что оба модуля - Perl и MySQL не скомпилированы вместе компилятором gcc. В этом случае данное несоответствие можно устранить, скомпилировав оба модуля компилятором gcc.

    Если при выполнении тестов вы получаете от модуля Msql-Mysql-modules следующие ошибки:

    t/00base............install_driver(mysql) failed: Can't load '../blib/arch/auto/DBD/mysql/mysql.so' for module DBD::mysql: ../blib/arch/auto/DBD/mysql/mysql.so: undefined symbol: uncompress at /usr/lib/perl5/5.00503/i586-linux/DynaLoader.pm line 169,

    то это означает, что в строку линкования необходимо включить библиотеку сжатия -lz. Для этого необходимо внести следующее изменение в файл `lib/DBD/mysql/Install.pm':

    $sysliblist .= " -lm";

    на

    $sysliblist .= " -lm -lz";




    Содержание  Назад  Вперед