错误代码:1136在mysql中创建过程时

时间:2015-04-14 09:46:44

标签: mysql

我正在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');

2 个答案:

答案 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);

您未列出的任何列都将被默认。如果您不提供列列表,则必须为所有列提供值,如果缺少任何列,您将收到错误。