Как я могу проверить, правильно ли установлен модуль Perl (DBD::mysql)?

Я использую XAMPP в Mac OS X Yosemite и пытаюсь связаться с моей базой данных MySQL с помощью Perl.

Это требует двух вещей: (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? А еще лучше, как я могу перестать получать эту ошибку?

Спасибо.

1 ответ

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

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

Другие вопросы по тегам