错误代码:1136列数与sp内的第1行的值计数不匹配

时间:2010-07-06 09:58:01

标签: mysql

我在使用存储过程填充预定义表时遇到了一些麻烦。 mytable有6个字段:uid,testrun,exp1,exp2,exp3,weightedvalue其中uid是自动增量PK。我的sp包含一个插入语句,如:

CREATE PROCEDURE test (IN testrun INT)
BEGIN
.... some declare statements ... 
INSERT  INTO exp_factors(testrun,exp1,exp2,exp3,weightedvalue) VALUES
(testrun, 
 exp1,
 exp2_1 + exp2_2,
 exp3_1 + exp3_2,
 exp1 * 0,2 + (exp2_1+exp2_2) * 0.5 + (exp3_1+exp3_2) * 0.3);


END

不幸的是,这会导致标题中所述的错误。据我所知,我只插入了6个字段中的5个,但显然我不想手动输入自动增量PK uid。 如何在不传递自动增量ID的情况下将exp值输入到此表中。 当然我可以创建一个没有额外PK的表,但这不是我想要的。

提前感谢您的任何建议!

2 个答案:

答案 0 :(得分:2)

插入的最后一行有逗号,有6列而不是5:

exp1 * 0,2 + (exp2_1+exp2_2) * 0.5 + (exp3_1+exp3_2) * 0.3
        ^

我想这应该是小数点,而不是逗号。

答案 1 :(得分:1)

当insert语句中的列数少于查询中的值数时,抛出上述异常

例如

INSERT INTO PERSON (PERSON_ID,FIRST_NAME,LAST_NAME,GENDER,BIRTH_DATE,CITY,STATE,COUNTRY,POSTAL_CODE) VALUES (NULL,'JHON','DOE','M','1988-06-17','7TH CROSS','HERE','THERE','WHERE','5600012');

此处值的数量为10,但查询中的列数为9,因此数据库会抛出上述异常。

要解决问题,我们必须将 STREET 列添加到查询

INSERT INTO PERSON (PERSON_ID,FIRST_NAME,LAST_NAME,GENDER,BIRTH_DATE,STREET,CITY,STATE,COUNTRY,POSTAL_CODE) VALUES (NULL,'PRAVEEN','KUMAR','M','1988-06-17','7TH CROSS','BANGALORE','KARNATAKA','INDIA','560078');