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

MySQL存储过程动态添加值报错求助:未知列'age'

解决MySQL存储过程调用时的1054错误

嘿,我来帮你搞定这个问题!你遇到的#1054 - Unknown column 'age' in 'field list'错误主要有几个关键原因,咱们一步步来修复:

1. 混淆了存储过程参数与会话变量

你在INSERT语句里用了@username、@age这种带@的变量,但这些是MySQL会话变量,并不是你定义的存储过程输入参数。存储过程的参数是不带@的,比如你声明的IN username VARCHAR (16),直接用username就行,加@反而会让MySQL找不到你传入的参数值。

修正后的存储过程代码:

DELIMITER //
CREATE PROCEDURE add_user(
 IN username VARCHAR (16),
 IN pass VARCHAR (255),
 IN email VARCHAR(255),
 IN fname VARCHAR (32),
 IN lname VARCHAR (32),
 IN age INT
)
BEGIN
 -- 去掉所有变量前的@,直接使用存储过程定义的参数
 INSERT INTO users (username, pass, email, fname, lname, age) VALUES (username, pass, email, fname, lname, age);
 INSERT INTO usershobbies (u_id, h_id) VALUES (293205, '1');
END;
//
DELIMITER ;

2. 调用时参数类型不匹配

你调用存储过程时给age传了字符串'80',但存储过程里age声明的是INT类型,虽然MySQL可能会做隐式转换,但直接传数字值更稳妥,也能避免不必要的类型错误:

CALL add_user('bugsbunny', 'Carrot1000', 'bugs@bunny.com', 'Bugs','Bunny', 80);

额外确认步骤

最后再检查下你的users表确实包含age字段,可以用这条语句查看表结构:

DESCRIBE users;

如果表中没有age字段,需要先添加该字段:

ALTER TABLE users ADD COLUMN age INT;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 09:20:56