2015-04-14 53 views
0
  • 的perl版本是5.8.8
  • MySQL的版本是42年5月5日
  • DBI的版本是1.633和DBD :: MySQL的版本是4.022

我在共享托管服务器上。 我有一个perl模块文件,它工作正常。我可以从perl脚本文件中使用它的subs没有问题。如果我添加到pm文件,使用DBI导致模块文件的编译错误

use DBI; 
my $username = "username"; 
my $password = "password"; 
my $dsn = "DBD:mysql:database"; # i changed DBD to DBI as well but no good 

仍然一切工作正常。 ,但只要我添加下面一行到perl模块文件,Perl脚本文件开始抱怨“编译失败中要求”

​​

我试着用搜索引擎,但没有结果。任何想法?

+0

请修复您的数据源名称:它应该以'DBI:'开头。看起来安装'DBD :: mysql'驱动程序模块有问题。尝试在'use DBI'下添加'use DBD :: mysql'并查看给出的错误 – Borodin

回答

0

我想创建一个可以被该模块的潜艇使用的dbi手柄,但是在使用前我得到了错误(正如我在问题中提到的那样)。 可能是模块的安全特性,我只能在子窗体中使用dbi,

使用DBI;
sub databaseHandle {
my $ username =“username”;
my $ password =“password”;
my $ dsn =“DBI:mysql:database”;
my $ dbh = DBI-> connect($ dsn,$ username,$ password)或者死于$ DBI :: errstr;
return $ dbh}
my $ dbh = databaseHandle();

我不知道具体原因,但这是我如何使用它。 感谢所有的帮助和想法。

-2

数据源必须是“DBI:mysql:database=my_database”,您可以在其中传递数据库的种类和名称。

发生该错误是因为必须安装数据库驱动程序模块DBD::mysql。询问您的主机是否安装了该模块,或者您是否可以自行安装。

+0

缺少的驱动程序模块会导致通常的'无法在@ INC中找到DBD/mysql.pm'。 OP得到'编译失败在require',这意味着文件存在,但包含一个错误 – Borodin

+0

我在我的问题中提到我有dbd :: mysql版本4.022,所以它在那里。 – shakAttack