2015-10-10 2 views
0

Я использую XAMPP на Mac OS X Yosemite, и я пытаюсь установить связь с моей базой данных MySQL с помощью Perl.Как проверить правильность установки модуля Perl (DBD :: mysql)?

Для этого требуются две вещи: (1) DBI и (2) модуль драйвера mysql, DBD :: mysql.

У меня возникли проблемы с установкой DBD :: mysql. Тем не менее, после следующих инструкций онлайн, теперь выглядит как DBD :: mysql установлен, но я скептически отношусь к тому, что он правильно.

В терминале, когда я загрузить CPAN, а затем введите "установить DBD :: MySQL", он отвечает, "DBD :: MySQL до настоящего времени (4.032)".

С учетом этого он устанавливается. Тем не менее, я беспокоюсь, что то, что я установил, достаточно для того, чтобы он сказал: «Эй, я установлен!», Но недостаточно для того, чтобы он фактически был функциональным, и именно поэтому у меня возникают ошибки, когда я попытайтесь подключиться к базе данных с Perl:

install_driver(mysql) failed: Can't load '/Library/Perl/5.18/darwin-thread-multi-2level/auto/DBD/mysql/mysql.bundle' for module DBD::mysql: dlopen(/Library/Perl/5.18/darwin-thread-multi-2level/auto/DBD/mysql/mysql.bundle, 1): Library not loaded: libmysqlclient.18.dylib 

Referenced from: /Library/Perl/5.18/darwin-thread-multi-2level/auto/DBD/mysql/mysql.bundle 
    Reason: image not found at /System/Library/Perl/5.18/darwin-thread-multi-2level/DynaLoader.pm line 194. 
at (eval 6) line 3. 
Compilation failed in require at (eval 6) line 3. 
Perhaps a required shared library or dll isn't installed where expected 
at login.pl line 9. 

Соответствующий код Perl фрагмент:

my $dbh = DBI->connect(   
    "dbi:mysql:dbname=TEST", 
    "root",       
    "",       
    { RaiseError => 1 },   
) or die $DBI::errstr; 

Я пытаюсь устранить это ли проблема с моей установки DBD :: MySQL, или если он это мой код Perl.

Как проверить, действительно ли моя установка DBD :: mysql хороша? Еще лучше, как я могу прекратить эту ошибку?

спасибо.

ответ

0

Вы можете обернуть вызов connect() в блок eval, чтобы поймать эту ошибку, однако у вас не осталось много вариантов, если он сработает, возможно, просто попытаться создать более удобную для пользователя ошибку messsage, а затем умереть в любом случае.

Что касается причин, по которым вы получаете сообщение об ошибке, попробуйте уточнить, где находится libmysqlclient.18.dylib. Похоже, что это было где-то там, где его можно было найти во время компиляции драйвера DBD::mysql, но не во время выполнения скрипта. Предполагая, что он не был случайно удален, добавление его каталога в переменную DYLD_LIBRARY_PATH должно работать. Я не знаю, какой config добавить путь к тому, чтобы сделать это добавление постоянным на OSX.

Смежные вопросы