我正在mysql工作台中创建程序,我希望程序在表中插入值,但是当我尝试调用程序时,它返回错误'错误代码:1136。列数不匹配值计数在第1行和第39行。我在某处俯瞰某些东西,但我找不到它。
DROP PROCEDURE usp_insertuser;
DELIMITER $
CREATE PROCEDURE usp_insertuser(first_name VARCHAR(45), last_name VARCHAR(100), date_of_birth DATE, email VARCHAR(250), username VARCHAR(45))
BEGIN
INSERT INTO user VALUES (null, first_name, last_name, date_of_birth, email, username);
END $
DELIMITER ;
CALL usp_insertuser('John', 'Smith', '1978-10-24', 'example@yahoo.com', 'johnsmith');
答案 0 :(得分:0)
从insert语句中删除null,如下所示:
INSERT INTO user VALUES ( first_name, last_name, date_of_birth, email, username);
或者更确切地说是
INSERT INTO user (first_name, last_name, date_of_birth, email, username)
VALUES (first_name, last_name, date_of_birth, email, username);
答案 1 :(得分:0)
最佳做法是明确列出要插入的列。恕我直言,依赖于数据库模式中列的顺序是一个坏主意。所以:
INSERT INTO user (first_name, last_name, date_of_birth, email, username)
VALUES (first_name, last_name, date_of_birth, email, username);
您未列出的任何列都将被默认。如果您不提供列列表,则必须为所有列提供值,如果缺少任何列,您将收到错误。