与 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 行, 第 1 行没有这样的文件或目录。在(eval 3)第 3 行。编译失败在 (eval 3) 第 3 行, 第 1 行需要。可能在 ./update_db_local.pl 第 50 行的预期位置没有安装所需的共享库或 dll。 您可能必须重新安装 DBD::mysql 才能获得链接到新 .so 的版本(从 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.6 升级到 5.24

从 Perl 5.14 升级到 5.28 后,我的 Perl 找不到 local::lib

带有 MySQL 5.6 的 Solaris 10 中的 MySQL 性能问题

使用 Perl 并发追加到同一个文件

在linux下的如何将perl默认版本5.8.8升级为5.10

orzdba安装与使用