You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从MySQL迁移至MariaDB后Perl脚本mysql_insertid报错求助

解决Perl DBI连接MariaDB获取自增ID的问题

问题根源

你之前用的$sth->{mysql_insertid}是DBD::mysql驱动的专属属性,切换到DBD::MariaDB驱动后,该属性名称已变更,因此触发"Unknown attribute mysql_insertid"错误。

可行解决方案

方案1:DBI标准跨驱动写法(推荐)

DBI提供了通用的last_insert_id方法,不依赖特定驱动,兼容性最强:

$id = $dbh->last_insert_id(undef, undef, undef, undef);

参数说明:前四个参数依次为catalog、schema、table、column,针对MariaDB/MySQL直接传undef即可,驱动会自动返回最后插入的自增ID。

方案2:DBD::MariaDB专属属性写法

如果要使用驱动专属的属性,注意mariadb_insertid属于数据库句柄($dbh),而非语句句柄($sth):

$id = $dbh->{mariadb_insertid};

错误尝试说明

你试过的几种写法均不符合Perl DBI规范:

  • LAST_INSERT_ID是SQL内置函数,不是Perl的属性;
  • mysqli_*系列函数是PHP的MySQLi扩展语法,Perl中不存在;
  • $sth->294454这类写法完全违反Perl语法。

自增配置验证(可选)

若以上方法仍失效,可先确认表的自增设置是否正常:
执行SQL查看表结构:

SHOW CREATE TABLE mytable;

确保主键字段已配置AUTO_INCREMENT,示例:

CREATE TABLE mytable (
    id INT PRIMARY KEY AUTO_INCREMENT,
    -- 其他字段
);

内容的提问来源于stack exchange,提问作者dude

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 19:50:02