2015-10-10 136 views
0

我在Mac OS X Yosemite上使用XAMPP,并且正在尝试使用Perl与我的MySQL数据库进行通信。如何检查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块中以捕获此错误,但是如果崩溃,则没有多余选项,可能只是尝试生成更加用户友好的错误消息,然后无论如何死亡。

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