文章内容

2018/9/13 15:49:48,作 者: 黄兵

[21S01][1136] Column count doesn't match value count at row 1

最近在插入MySQL数据库的时候,报如下错误:

[21S01][1136] Column count doesn't match value count at row 1

其中id是自增列,具体插入代码如下:

INSERT INTO InfoCollection VALUES ('全身两百的原配手撕穿着两万的小三,老婆得知书达礼,能干贤惠,孝顺持家,是中国男人的尿性。','作者:依米纪yimi<br>描述:      南京市街头又有大家熟悉的闹剧,全身两百的原配手撕穿着两万的小三。 原配穿着普通,腰身赘肉。明显的没得到太多的爱,或者是太多的钱。而小三,包包是G...    <br><img referrerpolicy="no-referrer" src="https:undefined">','https://www.jianshu.com/p/7e1d353236d5','2018-9-13','1');


出现错误的原因:

列名必须和列值的数一致,但是现在缺一个id,所以数量不一致,才会出现这个问题。


解决方案:

修改查询语句,指定对应关系:

INSERT INTO InfoCollection(title,description,uri,timestamp,state) VALUES ('全身两百的原配手撕穿着两万的小三,老婆得知书达礼,能干贤惠,孝顺持家,是中国男人的尿性。','作者:依米纪yimi<br>描述:      南京市街头又有大家熟悉的闹剧,全身两百的原配手撕穿着两万的小三。 原配穿着普通,腰身赘肉。明显的没得到太多的爱,或者是太多的钱。而小三,包包是G...    <br><img referrerpolicy="no-referrer" src="https:undefined">','https://www.jianshu.com/p/7e1d353236d5','2018-9-13','1');

可以看到不用指定id,插入也不会报错。

看一个实例:

如果使用了SET方式,必须至少为一列赋值。如果某一个字段使用了省缺值(如默认或自增值),这两种方法都可以省略这些字段。如id字段上使用了自增值,上面两条语句可以写成如下形式:
INSERT INTO users (name, age) VALUES('姚明',25);
INSERT INTO uses SET name = '姚明', age = 25;
MySQL在VALUES上也做了些变化。如果VALUES中什么都不写,那MySQL将使用表中每一列的默认值来插入新记录。
INSERT INTO users () VALUES();
如果表名后什么都不写,就表示向表中所有的字段赋值。使用这种方式,不仅在VALUES中的值要和列数一致,而且顺序不能颠倒。 INSERT INTO users VALUES(123, '姚明', 25);
如果将INSERT语句写成如下形式MySQL将会报错。
INSERT INTO users VALUES('姚明',25);


参考资料:mysql中利用insert对自增字段进行插值

黄兵个人博客原创。

转载请注明出处:黄兵个人博客 - [21S01][1136] Column count doesn't match value count at row 1

分享到:

发表评论

评论列表