如何修复perl脚本执行'使用dbd :: mysql;'

发布于 2025-02-10 10:10:04 字数 2168 浏览 1 评论 0原文

多年来,我一直在我的Synology NAS上运行一个Perl脚本。该脚本写入MariadB数据库。我从来没有任何错误。直到迁移到DSM7。这就是发生的事情...

  1. 使用MariadB5时,我从来没有任何问题
  2. ,我将数据库从Mariadb5迁移到Mariadb10。我更改了数据库名称和凭据,以确保我的Perl脚本使用MariadB10数据库。一切都很好!
  3. 根据提供的程序,我将Synology NAS NAS升级为DSM7,包括删除MariaDB5软件包的要求。

之后,我注意到我以下错误: 无法加载'/usr/local/lib/perl5/vendor_perl/auto/dbd/mysql/mysql.so'用于模块DBD :: mysql:libmariaiadb.so.3:无法打开共享对象:没有这样的共享对象:没有这样的文件或目录at/usr/local/lib/perl5/core_perl/dynaloader.pm 193。 在./mysql1_mdb10.pl第2行。 汇编失败了。 开始失败 - 编译在./mysql1_mdb10.pl第2行中流产。

为了使调试易于调试,我创建了一个测试脚本:

#!/usr/bin/perl
use DBD::mysql;
$solDBIDB = 'DBI:mysql:database=SOLAR2_10;host=127.0.0.1;port=3307';
$DBUser   = 'mydbuser';
$DBPass   = 'mydbpass';
$dbh = DBI->connect($solDBIDB, $DBUser, $DBPass) || die "Could not connect to database: $DBI::errstr";
$query = "SELECT * FROM SOLAR2_10.SUM_DATA_ITEMS";
$query_handle = $dbh->prepare($query); 
# EXECUTE THE QUERY
$query_handle->execute();

我使用的是Synology NAS DS415P,带有DSM DSM DSM 7.1-42661更新2(最新更新)

Perl是作为软件包安装(通过Synology Package Center)

Perl -V提供以下版本信息:这是Perl 5,版本28,Subversion 3(v5.28.3)为I686-Linux构建

的Mariadb10版本为10.3.32-1040

评论后更新@ikegami

我能够找到mysql.so文件:

-r-xr-xr-x 1 root root 131923 Apr 21  2021 /usr/local/lib/perl5/vendor_perl/auto/DBD/mysql/mysql.so

我能够找到各种libmariadb.so文件: ls -l in/volume1/@appStore/mariadb10/usr/local/mariadb10/lib

lrwxrwxrwx 1 root root       15 Nov 23  2021 libmariadb.so -> libmariadb.so.3
-rwxr-xr-x 1 root root   275356 Nov 23  2021 libmariadb.so.3
lrwxrwxrwx 1 root root       15 Nov 23  2021 libmysqlclient_r.so -> libmariadb.so.3
lrwxrwxrwx 1 root root       15 Nov 23  2021 libmysqlclient.so -> libmariadb.so.3
lrwxrwxrwx 1 root root       17 Nov 23  2021 libmysqld.so -> libmariadbd.so.19
drwxr-xr-x 3 root root     4096 Nov 23  2021 mysql
drwxr-xr-x 2 root root     4096 Nov 23  2021 pkgconfig

其他信息:

cpan -l | egrep -i "mysql"
Bundle::DBD::mysql  4.048
DBD::mysql  4.048
DBD::mysql::GetInfo undef

对我来说,一切看起来都安装得当... 我想念什么?

For years, I'm running a perl script on my Synology NAS. This script writes to a MariaDB database. I never had any errors. Until the migration to DSM7. This is what happened ...

  1. I never had any problem when using MariaDB5
  2. I migrated my database from MariaDB5 to MariaDB10. I changed the database name and the credentials to make sure my perl script used the MariaDB10 database. Everything worked fine!
  3. I upgraded my Synology NAS to DSM7, following the provided procedure, including the requirement to remove the MariaDB5 package.

Afterwards, I noticed I following error:
Can't load '/usr/local/lib/perl5/vendor_perl/auto/DBD/mysql/mysql.so' for module DBD::mysql: libmariadb.so.3: cannot open shared object file: No such file or directory at /usr/local/lib/perl5/core_perl/DynaLoader.pm line 193.
at ./mysql1_MDB10.pl line 2.
Compilation failed in require at ./mysql1_MDB10.pl line 2.
BEGIN failed--compilation aborted at ./mysql1_MDB10.pl line 2.

To make it easy to debug, I created a test script:

#!/usr/bin/perl
use DBD::mysql;
$solDBIDB = 'DBI:mysql:database=SOLAR2_10;host=127.0.0.1;port=3307';
$DBUser   = 'mydbuser';
$DBPass   = 'mydbpass';
$dbh = DBI->connect($solDBIDB, $DBUser, $DBPass) || die "Could not connect to database: $DBI::errstr";
$query = "SELECT * FROM SOLAR2_10.SUM_DATA_ITEMS";
$query_handle = $dbh->prepare($query); 
# EXECUTE THE QUERY
$query_handle->execute();

I'm using a Synology NAS DS415P with DSM DSM 7.1-42661 Update 2 (latest updates)

Perl is installed as a package (via the Synology Package center)

perl -v provides the following version information: This is perl 5, version 28, subversion 3 (v5.28.3) built for i686-linux

The version of MariaDB10 is 10.3.32-1040

Update after comment @ikegami

I'm able to find the mysql.so file:

-r-xr-xr-x 1 root root 131923 Apr 21  2021 /usr/local/lib/perl5/vendor_perl/auto/DBD/mysql/mysql.so

I'm able to find the various libmariadb.so files:
ls -l in /volume1/@appstore/MariaDB10/usr/local/mariadb10/lib

lrwxrwxrwx 1 root root       15 Nov 23  2021 libmariadb.so -> libmariadb.so.3
-rwxr-xr-x 1 root root   275356 Nov 23  2021 libmariadb.so.3
lrwxrwxrwx 1 root root       15 Nov 23  2021 libmysqlclient_r.so -> libmariadb.so.3
lrwxrwxrwx 1 root root       15 Nov 23  2021 libmysqlclient.so -> libmariadb.so.3
lrwxrwxrwx 1 root root       17 Nov 23  2021 libmysqld.so -> libmariadbd.so.19
drwxr-xr-x 3 root root     4096 Nov 23  2021 mysql
drwxr-xr-x 2 root root     4096 Nov 23  2021 pkgconfig

Additional info:

cpan -l | egrep -i "mysql"
Bundle::DBD::mysql  4.048
DBD::mysql  4.048
DBD::mysql::GetInfo undef

To me, everything looks properly installed ...
What am I missing?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文