Strawberry Perl 5.40(.2) - DBD::MariaDB与MariaDB 11.7连接异常
Perl DBI连接MariaDB报错:找不到'boot_DBD__MariaDB'符号
问题详情
已安装最新版C Connector(libmariadb.dll v3.4.5),但使用DBI尝试连接数据库时出现以下错误:
install_driver(MariaDB) failed: Can't find 'boot_DBD__MariaDB' symbol in C:/Strawberry/perl/site/lib/libMariaDB.dll at (eval 5) line 3. Compilation failed in require at (eval 5) line 3
用户使用的代码:
use DBI; use strict; my ($driver,$database,$host,$dsn,$userid,$password,$dbh); $driver = "MariaDB"; $database = "DBRIDGE"; $host = "localhost"; $dsn = "DBI:$driver:database=$database:host=$host"; $userid = "root"; $password = "mypassword"; $dbh = DBI->connect($dsn, $userid, $password ) or die "Prepare statement failed: $dbh->errstr()"; print "Connected to database on $host\n";
解决办法
- 安装DBD::MariaDB Perl驱动模块:你仅安装了C语言层面的连接器,但Perl的DBI需要对应的Perl驱动模块。打开Strawberry Perl的命令提示符,执行
cpanm DBD::MariaDB(若未安装cpanm,可改用cpan DBD::MariaDB)完成安装,安装过程会自动关联libmariadb.dll。 - 配置libmariadb.dll的系统路径:确保libmariadb.dll所在目录被添加到系统
PATH环境变量中,或者将该dll文件复制到Strawberry Perl的bin目录下(推荐使用环境变量配置的方式)。 - 验证驱动模块加载:安装完成后,在Perl命令行执行以下代码,无报错则说明模块正常:
use DBD::MariaDB; print "DBD::MariaDB 加载成功\n"; - 修正代码中的错误:原代码的die语句中,
$dbh->errstr()写法错误——连接失败时$dbh未初始化,应改用$DBI::errstr,修正后:$dbh = DBI->connect($dsn, $userid, $password ) or die "连接失败: $DBI::errstr";
内容的提问来源于stack exchange,提问作者Derek Logie
相关产品推荐
相关产品推荐

