如何检查是否正确安装了Perl模块(DBD :: mysql)?

时间:2015-10-10 19:01:43

标签: mysql perl xampp dbi dbd

我在Mac OS X Yosemite上使用XAMPP,我正在尝试使用Perl与我的MySQL数据库进行通信。

这需要两件事:(1)DBI和(2)mysql驱动模块,DBD :: mysql。

我在安装DBD :: mysql部分时遇到了很多麻烦。但是,在按照网上的一些说明后,它现在看起来像安装了DBD :: mysql,但我怀疑它是否正确。

终端中,当我加载 cpan 然后键入“install 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 个答案:

答案 0 :(得分:0)

您可以将connect()调用包装到eval块中以捕获此错误,但是如果崩溃您没有多少选项,可能只是为了尝试生成更多用户 - 友好的错误消息,然后无论如何都会死。

至于您收到错误的原因,请尝试检查系统上libmysqlclient.18.dylib的位置。看起来它是在编译DBD::mysql驱动程序期间可以找到的地方,但在脚本的运行时期间却找不到。假设它没有意外卸载,将其目录添加到DYLD_LIBRARY_PATH变量应该有效。我不知道添加路径的配置是什么,以便在OSX上使该添加成为永久性。