【MySQL报错】:Column count doesn’t match value count at row 1
MySQL报错:Column count doesn’t match value count at row 1
意思是存储的数据与数据库表的字段类型定义不相匹配.
由于类似 insert 语句中,前后列数不等造成的
主要有3个易错点:
-
要传入表中的字段数和values后面的值的个数不相等。
由于类似 insert 语句中,前后列数不等造成的
如1:省略数据库表的列名
INSERT INTO table_name
VALUES (value1, value2, value3,…)
改为:补全列名
INSERT INTO table_name (column1, column2, column3,…)
VALUES (value1, value2, value3,…)
如2:列数不相等,则检查相匹配的列数
INSERT INTO table_name(col_name1, col_name2, col_name3) VALUES(‘value1’,‘value2’); -
values的值类型与表中定义的字段类型不相符
解决办法:检查段类型是否正确, 是否越界, 有无把一种类型的数据存储到另一种数据类型中.
看看访问数据库的sql语句是否书写错误,赋值的参数是否与字段类型一致
比如有以下代码:
eg:一个表中有如下6个字段:
sql = "insert into user(id_card, passwd) values({}, '{}';".format(127, '111')
表中定义的id_card是字符串类型,但是这里传入的是整型。不相符。
另外,多说一句:这里的values值的类型与传入的参数类型无关。
比如:values({})这是一个整型,values(‘{}’)这是一个字符串类型
类型区别的重点在与values中的{}是否被单引号括起来,如果括起来了就是字符串,没有就是整型。而与format()中参数类型无关。
- 书写错误。
如标点符号,英文符号错输成中文;如多出空格等
注意:逗号,括号,分号都要用英文的不要写成中文的!!!!!!!(我就是这样错的 哭~)