与 MySQL 合作多年的 Perl 脚本在升级到 MariaDB 后不再有效
Posted
技术标签:
【中文标题】与 MySQL 合作多年的 Perl 脚本在升级到 MariaDB 后不再有效【英文标题】:Perl script that has worked with MySQL for years no longer works after upgrading to MariaDB 【发布时间】:2020-03-23 15:15:24 【问题描述】:我创建了这个 Perl 脚本来自动更新一堆 CMS 安装。它已经工作了多年。现在尝试连接到每个数据库时都失败了。这发生在将所有数据库从 mysql 5.7 更新到 MariaDB 10.3 之后。它失败的那一行是非常基本的:
$dbh = DBI->connect($db_str, $user_str, $pass_str);
$db_str 是在这一行中构造的:
$db_str = "DBI:mysql:" . $database . ":localhost";
如果图它必须是以下两种情况之一:MariaDB 的连接字符串需要不同,或者 MariaDB 缺少 Perl 库。但是我是 MariaDB 的新手,所以我不知道。
【问题讨论】:
错误信息是什么? 我得到的错误是: install_driver(mysql) failed: Can't load '/usr/local/lib64/perl5/auto/DBD/mysql/mysql.so' for module DBD:: mysql:libmysqlclient.so.20:无法打开共享对象文件:/usr/lib64/perl5/DynaLoader.pm 第 190 行,cpan
shell 中发出 force test DBD::mysql
然后发出 force install DBD::mysql
当且仅当测试成功。)
【参考方案1】:
发现问题:脚本顶部的 Perl 库的路径已更改。这个:
#!/usr/bin/perl
需要改成:
#!/usr/local/cpanel/3rdparty/bin/perl
它特定于服务器的设置,可能在更新期间发生了变化。谢谢!
【讨论】:
以上是关于与 MySQL 合作多年的 Perl 脚本在升级到 MariaDB 后不再有效的主要内容,如果未能解决你的问题,请参考以下文章
从 Perl 5.14 升级到 5.28 后,我的 Perl 找不到 local::lib
带有 MySQL 5.6 的 Solaris 10 中的 MySQL 性能问题