主键自动增量在mysql上不起作用

yduiuuwa  于 2021-08-13  发布在  Java
关注(0)|答案(2)|浏览(342)

**结束。**此问题需要详细的调试信息。它目前不接受答案。
**想改进这个问题吗?**更新问题,使其成为堆栈溢出的主题。

11个月前关门了。
改进这个问题

CREATE TABLE people (
    id INT NOT NULL AUTO_INCREMENT,
    first_name VARCHAR(50) NOT NULL,
    salary INT NOT NULL,
    PRIMARY KEY (id)
);

我的插入语句

INSERT INTO people
VALUES
('Austin', 65000),
('Josh', 100000),
('Pettea', 55000)
;
tcomlyy6

tcomlyy61#

列数量(跳过其列表时表结构中的总列数量)必须与值数量强烈匹配。
因此,请指定列名:

INSERT INTO people (first_name, salary)
VALUES
('Austin', 65000),
('Josh', 100000),
('Pettea', 55000);

或指定每列的值:

INSERT INTO people
VALUES
(NULL, 'Austin', 65000),
(NULL, 'Josh', 100000),
(NULL, 'Pettea', 55000);

在上一段代码中,可以使用零值或默认关键字而不是null。这三个值中的任何一个都会产生新的值。
前一个代码是首选-它不需要在任何版本,如果结构被改变。
pps公司。我建议将自动递增的列数据类型定义为unsigned—这会将可能自动生成的值的数量增加两倍。

a5g8bdjr

a5g8bdjr2#

应该是:

INSERT INTO people(first_name, salary)
VALUES
('Austin', 65000),
('Josh', 100000),
('Pettea', 55000);

试试看。
这是一把小提琴:https://www.db-fiddle.com/f/rw6qypbyemvzhcskipbpax/0 单击“运行”。
编辑:我想我误读了您的评论:在这种情况下,您需要指定要插入数据的列。目前,您的查询正在尝试将两列数据值插入到三列表中。 INSERT INTO people 类似于 INSERT INTO people(id,first_name,salary) 所以插入两列值的数据返回 Column count doesn't match value count at row 1 错误。如果你这样做是可以接受的:

INSERT INTO people
VALUES
(1,'Austin', 65000),
(2,'Josh', 100000),
(3,'Pettea', 55000);

但你在制造 id 列组件 AUTO_INCREMENT 因此没有必要手动填充它。

相关问题