【发布时间】:2015-03-11 23:35:35
【问题描述】:
我目前正在尝试运行由 Perl 脚本组成的 NERVE 疫苗开发程序,但无法使其正常运行。我已经下载并安装了所有先决条件,但每次我到达代码的 mysql 步骤时,它都会崩溃,并显示一条错误消息:无法通过包“Mysql”定位对象方法“connect”(也许你忘记加载“ Mysql”?)在 ./NERVE 第 340 行,第 5 行。我查看了代码并将“使用 mysql”更改为“使用 DBI”和“使用 DBD:mysql”,但随后出现错误:无法使用string ("") 作为 HASH ref 而“strict refs”在 /usr/local/lib/perl/5.14.2/DBI.pm 第 604 行第 5 行使用。
如果有人可以查看 mysql 部分的代码并就如何修复它给我建议以便我可以正确运行程序,我将不胜感激。我尝试向开发人员发送电子邮件但没有回复,所以我希望你们能帮助我。
下面是 NERVE 的 mysql 部分的 perl 代码。
use mysql;
$db=Mysql->connect("$host","$database","$user","$password");
if(!$db || (!$host || !$database || !$user || !$password)){
print "\nAttention: mysql connection parameters are missing or not correct!\n";
print "I need you to specify: host, database, user, password;\n";
print "You can do it now typing them right in that order and separeted only by comma;\n";
print "For example:localhost,Pathogens,sandro,xvzhs\n";
print "So, your Mysql connection settings are (type q to quit):";
while (!($db && $mysql =~ /,/) & $mysql ne "q"){
chomp($mysql = <STDIN>);
die "Ok,let's quit this work! Call me when your mind is clearer about Mysql parameters! Bye :-)\n" if $mysql eq "q";
($host,$database,$user,$password) = split (',',$mysql);
$db=Mysql->connect("$host","$database","$user","$password");
last if($db && $mysql =~ /,/);
print "\nMysql connection settings still not correct!\n";
print "Remember: host, database, user, password, separeted only by comma.\n";
print "For example:localhost,Pathogens,sandro,xvzhs\n";
print "Please, try again:";
}
print "Ok, Mysql connection to \"$database\" database was successful!\n";
}
【问题讨论】:
-
呸。
Mysql.pmhas been obsolete since 1998. 您应该仔细阅读DBIdocumentation,因为它的界面与Mysql.pm不同,并且您的代码需要相应地更新(即您不能只用use DBI;替换use Mysql;并期望它能够工作)。我将从阅读outline usage 部分开始。 -
话虽如此,如果这是那些可怕的百万行怪物之一,也被称为“遗留代码”(颤抖),那么更新它不是一种选择,只是将您的
use语句更改为use Mysql;,大写为M。 Perl 区分大小写。 -
是的,“使用 mysql”最初是“使用 Mysql”,但它给了我错误:无法在 @INC 中找到 Mysql.pm(@INC 包含:/usr/lib/perl5/DBD /usr/lib/perl5/DBD/mysql /usr/lib/perl5/DBI /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib /perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl .) 在 ./NERVE 第 339 行。开始失败——编译在 ./ 中止神经线 339。
-
有没有我可以下载的包让 Mysql 代替 mysql 工作?我现在正在运行 Debian 7。抱歉所有问题,我对所有这些编程和 Linux 东西都是新手。
-
神经软件最初发布于 2006 年。如果您现在真的想使用它,请向原作者询问现代版本。只是我的 2 美分。