gpt4 book ai didi

mysql - 有关 mysql 的 Perl 问题 :Can't locate object method "connect" and Can't use string ("") as a HASH

转载 作者:行者123 更新时间:2023-11-29 07:45:26 25 4
gpt4 key购买 nike

我目前正在尝试运行 NERVE 一个由 Perl 脚本组成的疫苗开发程序,但无法使其正常运行。我已经下载并安装了所有先决条件,但每次到达代码的 mysql 步骤时,它都会崩溃,并显示一条错误消息:无法通过包“Mysql”找到对象方法“connect”(也许您忘记加载“Mysql"?) 在 ./NERVE 第 340 行第 5 行。我查看了代码并将“use mysql”更改为“use DBI”和“use DBD:mysql”,但随后出现错误: Can't use字符串(“”)作为哈希引用,而“严格引用”在/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";
}

最佳答案

错误信息是正确的。您正在尝试使用名为 的模块,但从未加载它。改变

use mysql;

use Mysql;

使用该模块。在评论中,您提到结果是

Can't locate Mysql.pm in @INC 

除非您有理由相信该模块已安装,否则表明需要安装它[1]

该模块曾经是 DBD-mysql 发行版的一部分,但它已经过时了。它太古老了,几年前就从 DBD 中删除了。要获取它,您需要将 DBD-mysql 发行版降级到版本 3.0008 .

这是一件非常糟糕的事情。该脚本应该使用 DBI。

<小时/>

cjm积分

since the Mysql.pm in 3.0008 is just a compatibility layer using DBI under the hood, you should be able to install Mysql.pm & Mysql/Statement.pm from that old dist along with a current DBD-mysql.

因此,如果您从上面链接的发行版中提取 Mysql.pm 作为 /usr/lib/perl5/Mysql.pmMysql/Statement.pm /usr/lib/perl5/Mysql/Statement.pm,您应该有一个简单无痛的解决方案。

<小时/>
  1. 在较新版本的 Perl 中,错误消息已得到改进。现在内容如下:

    Can't locate Mysql.pm in @INC (you may need to install the Mysql module)

关于mysql - 有关 mysql 的 Perl 问题 :Can't locate object method "connect" and Can't use string ("") as a HASH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27931868/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com