MySQL报错1136:插入products表时第1行列数与值数不匹配如何解决
报错原因
- 直接原因:你编写的VALUES子句中,
"Carrot & Fennel"后面缺少逗号,MySQL会把相邻的"Carrot & Fennel"和"loaf"识别为同一个字符串值,导致你声明了6个插入字段,但实际只提供了5个值,字段和值的数量不匹配触发1136报错。 - 潜在问题:你的
products表包含非空主键product_id,如果该字段没有设置AUTO_INCREMENT自增属性,就算补全逗号后插入依然会报错,因为你没有给非空主键提供值。
修复方案
情况1:product_id已设置自增属性
只需要补全VALUES里缺失的逗号即可,修正后的SQL如下:
INSERT INTO `products` ( product_code, displayname, type, retail, wholesale, available ) VALUES ( "carrot", "Carrot & Fennel", "loaf", 9.50, 7.50, 1 );
情况2:product_id未设置自增属性
两种可选处理方式:
- 先给
product_id设置自增属性,后续插入就不用手动传主键值:
ALTER TABLE `products` MODIFY COLUMN `product_id` INT PRIMARY KEY NOT NULL AUTO_INCREMENT;
修改完成后执行上面修正后的插入语句即可。
2. 插入时主动给product_id传合法的唯一非空值:
INSERT INTO `products` ( product_id, product_code, displayname, type, retail, wholesale, available ) VALUES ( 1, -- 替换为当前表中不存在的主键值即可 "carrot", "Carrot & Fennel", "loaf", 9.50, 7.50, 1 );
内容的提问来源于stack exchange,提问作者Vromoth
相关产品推荐
相关产品推荐

