出现编译错误 Can not load Mysql.pm in @INC
Posted
技术标签:
【中文标题】出现编译错误 Can not load Mysql.pm in @INC【英文标题】:Getting compilation error Can not load Mysql.pm in @INC 【发布时间】:2022-01-23 21:04:02 【问题描述】:我正在使用安装了 perl v5.26.0 的 RHEL 8 服务器。在我的项目中,有很多使用 mysql.pm 的遗留 perl 模块,如下所示。
require 5.004;
require Exporter;
use Mysql;
在编译这些模块时,我遇到了类似的错误,
Can't locate Mysql.pm in @INC (you may need to install the Mysql module) (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5)
我已经安装了 DBD::mysql 和 mysql-devel。
yum install mysql-devel
DBD::mysql through cpan.
如果我将导入从 Mysql 更改为 DBI,编译器不会报错。因此,从测试的角度来看,现在更改所有遗留模块既费时又冒险。
有什么办法可以将 perl 版本降级到 v5.16 或以下?非常感谢其他建议。
【问题讨论】:
"有没有办法将 perl 版本降级到 v5.16 或以下" 你应该可以使用perlbrew
安装旧版本,如 5.12,请参阅例如this答案
DBD::mysql
不是Mysql
。我不知道Mysql
是什么,但它不在 CPAN 上,也不属于 Perl。它是与脚本安装在同一目录中的模块吗?如果是这样,则此问题与this one 重复
通过 perlbrew 时,它会在 root 中打开一个新的 shell。但是我的 perl 脚本将由 apache httpd 通过 CGI 执行。
@PrashantaKumarPal 我认为 apache 使用 shebang 行来选择它将使用的 perl,请参阅 this 参考。可以尝试修改shebang为perlbrew安装perl的绝对路径吗?
【参考方案1】:
Mysql
在DBI
之前的日子里是一个非常古老的 MySQL 数据库接口。它与DBI::mysql
完全没有联系。 last version on CPAN 是二十多年前的事了。
您可以尝试在您的服务器上安装该 CPAN 发行版(但老实说,CPAN Testers results 看起来并不令人鼓舞)。
您最好的选择(是的,这可能需要一些工作)是重写您的代码以改用 DBI::mysql。也许您可以在名为 Mysql
的模块中编写自己的 shim,该模块将旧的 Mysql
样式调用转换为 DBI::mysql
调用。
【讨论】:
以上是关于出现编译错误 Can not load Mysql.pm in @INC的主要内容,如果未能解决你的问题,请参考以下文章
Fedora13下编译busybox-1.15.0出现can not find lcrypt错误
网站出现Mysql version can not be less than 4.1怎么办
keil4一调试就出现错误提示:could not load file...AXF.debugger aborted.请问到底是哪里出了问题?
[原]使用SevenZipSharp出现“Can not load 7-zip library or internal COM error! Message: DLL file does