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

phpMyAdmin执行带空值的存储过程ADD_PERSON报错求助

问题分析与修正方案

核心错误原因

你定义的存储过程参数是person_id、first_name、last_name、username,但INSERT语句里却使用了@person_id_arg、@first_name_arg这类未定义的用户变量,导致传入的参数根本没被用到,进而引发字段赋值错误(比如person_id字段可能因未正确传入值而触发NOT NULL约束报错)。

修正后的存储过程代码

CREATE DEFINER=`root`@`localhost` PROCEDURE `ADD_PERSON`(
    IN `person_id` DECIMAL(12) UNSIGNED ZEROFILL,
    IN `first_name` VARCHAR(32),
    IN `last_name` VARCHAR(32),
    IN `username` VARCHAR(32)
)
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
INSERT INTO PERSON(person_id, first_name, last_name, username)
VALUES(person_id, first_name, last_name, username);

可选优化方案(若person_id为自增主键)

如果PERSON表的person_id是自增主键,建议移除该参数,让数据库自动生成主键值,避免手动传入的冲突问题:

CREATE DEFINER=`root`@`localhost` PROCEDURE `ADD_PERSON`(
    IN `first_name` VARCHAR(32),
    IN `last_name` VARCHAR(32),
    IN `username` VARCHAR(32)
)
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
INSERT INTO PERSON(first_name, last_name, username)
VALUES(first_name, last_name, username);

执行注意事项

  • 确保PERSON表字段类型与存储过程参数类型完全匹配
  • 若person_id字段设为NOT NULL,执行时必须传入有效非空值(或使用自增逻辑)
  • 在phpMyAdmin中执行时,确认输入的参数格式符合要求(比如DECIMAL(12) UNSIGNED ZEROFILL需为不超过12位的数字)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 13:35:44