Mysql Auto increment不自动递增值

2q5ifsrm  于 2022-12-03  发布在  Mysql
关注(0)|答案(3)|浏览(205)

字段|型号|空值|关键字|默认值|额外的
| 学生标识|整数|否|优先级|空值|自动递增
当我需要在表中插入数据时,它的自动增量会自动插入值,但当我尝试此查询insert into student_info values("Harry",75,89,50,56);时,我得到此错误为ERROR 1136(21S01):列计数与第1行的值计数不匹配
当我写这样的查询时

insert into student_info values(1,"Harry",75,89,50,56);

数据被插入
我不想手动插入Student_id,因为我已将此列声明为AUTO_INCREMENT
Mysql 8.0版

wkftcu5l

wkftcu5l1#

您只需要在查询中显式指定列的列表,并省略自动递增的列。您还没有指定表中包含哪些列,但它将类似于:

INSERT INTO student_info(Name, Column2, Column3, Column4, Column5) 
VALUES("Harry",75,89,50,56);
xuo3flqw

xuo3flqw2#

指定INSERT作业中的数据栏。例如:

INSERT INTO student_info (Name, SomeValue, AnotherValue, AnotherColumn, AndAnotherColumn) 
VALUES ("Harry",75,89,50,56)

数据库引擎不会根据主键是否为AUTOINCREMENT来推断所需的内容。它只是查找所提供的值的数目和表中的列数。如果这些值和列数不匹配,则需要指定要使用的列。
顺便说一句,你真的应该 * 总是 * 在这些操作中指定列。否则一旦你改变了任何表模式,那么 * 应该 * 仍然有效的操作就不会起作用了。

jmp7cifd

jmp7cifd3#

你需要写你的请求这样:

INSERT INTO student_info(Student_id, Name, Col1, Col2, Col3, Col4) 
VALUES('',"Harry",75,89,50,56);

当你需要将值传递给你的id自动增量时,传递“空”值,它会自己生成新的值。

相关问题