Как я могу проверить, правильно ли установлен модуль 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.